ZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKaW5kZXggNzA1YmFjNS4uNWE4ZjEyYyAxMDA2NDQKLS0tIGEvTUFJTlRBSU5FUlMKKysrIGIvTUFJTlRBSU5FUlMKQEAgLTU0Nyw2ICs1NDcsOSBAQAogCiAJbWVlc2MJCUFSTTkyNkVKUyAoQVQ5MVNBTTkyNjMgU29DKQogCitTZWRqaSBHYW91YW91PHNlZGppLmdhb3Vhb3VAYXRtZWwuY29tPgorCWF0OTFzYW05bTEwZzQ1ZWsJQVJNOTI2RUpTIChBVDkxU0FNOUc0NSBTb0MpCisKIE1hcml1cyBHcvZnZXIgPG1hZ0BzeXNnby5kZT4KIAogCWltcGE3CQlBUk03MjBUIChFUDcyMTEpCmRpZmYgLS1naXQgYS9NQUtFQUxMIGIvTUFLRUFMTAppbmRleCA0MWYxNDQ1Li4wM2VmNWI0IDEwMDc1NQotLS0gYS9NQUtFQUxMCisrKyBiL01BS0VBTEwKQEAgLTU3OCwyNCArNTc4LDI1IEBACiAjIyBBVDkxIFN5c3RlbXMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotTElTVF9hdDkxPSIJCVwKLQlhZmViOTI2MAlcCi0JYXQ5MWNhcDlhZGsJXAotCWF0OTFybTkyMDBkawlcCi0JYXQ5MXJtOTIwMGVrCVwKLQlhdDkxc2FtOTI2MGVrCVwKLQlhdDkxc2FtOTI2MWVrCVwKLQlhdDkxc2FtOTI2M2VrCVwKLQlhdDkxc2FtOWcyMGVrCVwKLQlhdDkxc2FtOXJsZWsJXAotCWNtY19wdTIJCVwKLQljc2I2MzcJCVwKLQlrYjkyMDIJCVwKLQltZWVzYwkJXAotCW1wMnVzYgkJXAotCW01MDFzawkJXAotCXBtOTI2MQkJXAotCXBtOTI2MwkJXAorTElTVF9hdDkxPSIJCQlcCisJYWZlYjkyNjAJCVwKKwlhdDkxY2FwOWFkawkJXAorCWF0OTFybTkyMDBkawkJXAorCWF0OTFybTkyMDBlawkJXAorCWF0OTFzYW05MjYwZWsJCVwKKwlhdDkxc2FtOTI2MWVrCQlcCisJYXQ5MXNhbTkyNjNlawkJXAorCWF0OTFzYW05bTEwZzQ1ZWsJXAorCWF0OTFzYW05ZzIwZWsJCVwKKwlhdDkxc2FtOXJsZWsJCVwKKwljbWNfcHUyCQkJXAorCWNzYjYzNwkJCVwKKwlrYjkyMDIJCQlcCisJbWVlc2MJCQlcCisJbXAydXNiCQkJXAorCW01MDFzawkJCVwKKwlwbTkyNjEJCQlcCisJcG05MjYzCQkJXAogIgogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCmluZGV4IDJhMDY0NDAuLjU1YTk2NDggMTAwNjQ0Ci0tLSBhL01ha2VmaWxlCisrKyBiL01ha2VmaWxlCkBAIC0yODAwLDYgKzI4MDAsMzEgQEAKIHBtOTI2MV9jb25maWcJOgl1bmNvbmZpZwogCUAkKE1LQ09ORklHKSAkKEA6X2NvbmZpZz0pIGFybSBhcm05MjZlanMgcG05MjYxIHJvbmV0aXggYXQ5MQogCithdDkxc2FtOW0xMGc0NWVrX25hbmRmbGFzaF9jb25maWcgXAorYXQ5MXNhbTltMTBnNDVla19kYXRhZmxhc2hfY29uZmlnIFwKK2F0OTFzYW05bTEwZzQ1ZWtfZGF0YWZsYXNoX2NzMF9jb25maWcgXAorYXQ5MXNhbTltMTBnNDVla19jb25maWcgXAorYXQ5MXNhbTlnNDVla2VzX25hbmRmbGFzaF9jb25maWcgXAorYXQ5MXNhbTlnNDVla2VzX2RhdGFmbGFzaF9jb25maWcgXAorYXQ5MXNhbTlnNDVla2VzX2RhdGFmbGFzaF9jczBfY29uZmlnIFwKK2F0OTFzYW05ZzQ1ZWtlc19jb25maWcJOgl1bmNvbmZpZworCUBta2RpciAtcCAkKG9iailpbmNsdWRlCisJCUBpZiBbICIkKGZpbmRzdHJpbmcgOW0xMCwkQCkiIF0gOyB0aGVuIFwKKwkJZWNobyAiI2RlZmluZSBDT05GSUdfQVQ5MVNBTTlNMTBHNDVFSyAxIgk+PiQob2JqKWluY2x1ZGUvY29uZmlnLmggOyBcCisJCSQoWEVDSE8pICIuLi4gOU0xMEc0NSBWYXJpYW50IiA7IFwKKwllbHNlIFwKKwkJZWNobyAiI2RlZmluZSBDT05GSUdfQVQ5MVNBTTlHNDVFS0VTIDEiCT4+JChvYmopaW5jbHVkZS9jb25maWcuaCA7IFwKKwlmaTsKKworCUBpZiBbICIkKGZpbmRzdHJpbmcgX25hbmRmbGFzaCwkQCkiIF0gOyB0aGVuIFwKKwkJZWNobyAiI2RlZmluZSBDT05GSUdfU1lTX1VTRV9OQU5ERkxBU0ggMSIJPj4kKG9iailpbmNsdWRlL2NvbmZpZy5oIDsgXAorCQkkKFhFQ0hPKSAiLi4uIHdpdGggZW52aXJvbm1lbnQgdmFyaWFibGUgaW4gTkFORCBGTEFTSCIgOyBcCisJZWxzZSBcCisJCWVjaG8gIiNkZWZpbmUgQ09ORklHX0FUTUVMX1NQSSAxIgk+PiQob2JqKWluY2x1ZGUvY29uZmlnLmggOyBcCisJCSQoWEVDSE8pICIuLi4gd2l0aCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpbiBTUEkgREFUQUZMQVNIIENTMCIgOyBcCisJZmk7CisJQCQoTUtDT05GSUcpIC1hIGF0OTFzYW05bTEwZzQ1ZWsgYXJtIGFybTkyNmVqcyBhdDkxc2FtOW0xMGc0NWVrIGF0bWVsIGF0OTEKKwogcG05MjYzX2NvbmZpZwk6CXVuY29uZmlnCiAJQCQoTUtDT05GSUcpICQoQDpfY29uZmlnPSkgYXJtIGFybTkyNmVqcyBwbTkyNjMgcm9uZXRpeCBhdDkxCiAKZGlmZiAtLWdpdCBhL2JvYXJkL2F0bWVsL2F0OTFzYW05bTEwZzQ1ZWsvTWFrZWZpbGUgYi9ib2FyZC9hdG1lbC9hdDkxc2FtOW0xMGc0NWVrL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjYWYxZTQKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9hdG1lbC9hdDkxc2FtOW0xMGc0NWVrL01ha2VmaWxlCkBAIC0wLDAgKzEsNTUgQEAKKyMKKyMgKEMpIENvcHlyaWdodCAyMDAzLTIwMDgKKyMgV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyMKKyMgKEMpIENvcHlyaWdodCAyMDA4CisjIFN0ZWxpYW4gUG9wIDxzdGVsaWFuLnBvcEBsZWFkdGVjaGRlc2lnbi5jb20+CisjIExlYWQgVGVjaCBEZXNpZ24gPHd3dy5sZWFkdGVjaGRlc2lnbi5jb20+CisjCisjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisjIHByb2plY3QuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyMgTUEgMDIxMTEtMTMwNyBVU0EKKyMKKworaW5jbHVkZSAkKFRPUERJUikvY29uZmlnLm1rCisKK0xJQgk9ICQob2JqKWxpYiQoQk9BUkQpLmEKKworQ09CSlMteSArPSBhdDkxc2FtOW0xMGc0NWVrLm8KK0NPQkpTLXkgKz0gbGVkLm8KKworU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTLXk6Lm89LmMpCitPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKENPQkpTLXkpKQorU09CSlMJOj0gJChhZGRwcmVmaXggJChvYmopLCQoU09CSlMpKQorCiskKExJQik6CSQob2JqKS5kZXBlbmQgJChPQkpTKSAkKFNPQkpTKQorCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpTKSAkKFNPQkpTKQorCitjbGVhbjoKKwlybSAtZiAkKFNPQkpTKSAkKE9CSlMpCisKK2Rpc3RjbGVhbjoJY2xlYW4KKwlybSAtZiAkKExJQikgY29yZSAqLmJhayAkKG9iaikuZGVwZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBkZWZpbmVzICQob2JqKS5kZXBlbmQgdGFyZ2V0CitpbmNsdWRlICQoU1JDVFJFRSkvcnVsZXMubWsKKworc2luY2x1ZGUgJChvYmopLmRlcGVuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9ib2FyZC9hdG1lbC9hdDkxc2FtOW0xMGc0NWVrL2F0OTFzYW05bTEwZzQ1ZWsuYyBiL2JvYXJkL2F0bWVsL2F0OTFzYW05bTEwZzQ1ZWsvYXQ5MXNhbTltMTBnNDVlay5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1YTE0YTkKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9hdG1lbC9hdDkxc2FtOW0xMGc0NWVrL2F0OTFzYW05bTEwZzQ1ZWsuYwpAQCAtMCwwICsxLDMzNCBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNy0yMDA4CisgKiBTdGVsaWFuIFBvcCA8c3RlbGlhbi5wb3BAbGVhZHRlY2hkZXNpZ24uY29tPgorICogTGVhZCBUZWNoIERlc2lnbiA8d3d3LmxlYWR0ZWNoZGVzaWduLmNvbT4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxhc20vc2l6ZXMuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9hdDkxc2FtOWc0NS5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2F0OTFzYW05X21hdHJpeC5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2F0OTFzYW05X3NtYy5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2F0OTFfY29tbW9uLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvYXQ5MV9wbWMuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9hdDkxX3JzdGMuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9jbGsuaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9ncGlvLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvaW8uaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9oYXJkd2FyZS5oPgorI2luY2x1ZGUgPGxjZC5oPgorI2luY2x1ZGUgPGF0bWVsX2xjZGMuaD4KKyNpZiBkZWZpbmVkKENPTkZJR19SRVNFVF9QSFlfUikgJiYgZGVmaW5lZChDT05GSUdfTUFDQikKKyNpbmNsdWRlIDxuZXQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPG5ldGRldi5oPgorCitERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyoKKyAqIE1pc2NlbGFuZW91cyBwbGF0Zm9ybSBkZXBlbmRlbnQgaW5pdGlhbGlzYXRpb25zCisgKi8KKworI2lmZGVmIENPTkZJR19DTURfTkFORAorc3RhdGljIHZvaWQgYXQ5MXNhbTltMTBnNDVla19uYW5kX2h3X2luaXQodm9pZCkKK3sKKwl1bnNpZ25lZCBsb25nIGNzYTsKKworCS8qIEVuYWJsZSBDUzMgKi8KKwljc2EgPSBhdDkxX3N5c19yZWFkKEFUOTFfTUFUUklYX0VCSUNTQSk7CisJYXQ5MV9zeXNfd3JpdGUoQVQ5MV9NQVRSSVhfRUJJQ1NBLAorCQkgICAgICAgY3NhIHwgQVQ5MV9NQVRSSVhfRUJJX0NTM0FfU01DX1NNQVJUTUVESUEpOworCisJLyogQ29uZmlndXJlIFNNQyBDUzMgZm9yIE5BTkQvU21hcnRNZWRpYSAqLworCWF0OTFfc3lzX3dyaXRlKEFUOTFfU01DX1NFVFVQKDMpLAorCQkgICAgICAgQVQ5MV9TTUNfTldFU0VUVVBfKDEpIHwgQVQ5MV9TTUNfTkNTX1dSU0VUVVBfKDApIHwKKwkJICAgICAgIEFUOTFfU01DX05SRFNFVFVQXygxKSB8IEFUOTFfU01DX05DU19SRFNFVFVQXygwKSk7CisJYXQ5MV9zeXNfd3JpdGUoQVQ5MV9TTUNfUFVMU0UoMyksCisJCSAgICAgICBBVDkxX1NNQ19OV0VQVUxTRV8oNCkgfCBBVDkxX1NNQ19OQ1NfV1JQVUxTRV8oMykgfAorCQkgICAgICAgQVQ5MV9TTUNfTlJEUFVMU0VfKDMpIHwgQVQ5MV9TTUNfTkNTX1JEUFVMU0VfKDIpKTsKKwlhdDkxX3N5c193cml0ZShBVDkxX1NNQ19DWUNMRSgzKSwKKwkJICAgICAgIEFUOTFfU01DX05XRUNZQ0xFXyg3KSB8IEFUOTFfU01DX05SRENZQ0xFXyg0KSk7CisJYXQ5MV9zeXNfd3JpdGUoQVQ5MV9TTUNfTU9ERSgzKSwKKwkJICAgICAgIEFUOTFfU01DX1JFQURNT0RFIHwgQVQ5MV9TTUNfV1JJVEVNT0RFIHwKKwkJICAgICAgIEFUOTFfU01DX0VYTldNT0RFX0RJU0FCTEUgfAorI2lmZGVmIENPTkZJR19TWVNfTkFORF9EQldfMTYKKwkJICAgICAgIEFUOTFfU01DX0RCV18xNiB8CisjZWxzZSAvKiBDT05GSUdfU1lTX05BTkRfREJXXzggKi8KKwkJICAgICAgIEFUOTFfU01DX0RCV184IHwKKyNlbmRpZgorCQkgICAgICAgQVQ5MV9TTUNfVERGXygzKSk7CisKKwlhdDkxX3N5c193cml0ZShBVDkxX1BNQ19QQ0VSLCAxIDw8IEFUOTFTQU05RzQ1X0lEX1BJT0MpOworCisJLyogQ29uZmlndXJlIFJEWS9CU1kgKi8KKwlhdDkxX3NldF9ncGlvX2lucHV0KENPTkZJR19TWVNfTkFORF9SRUFEWV9QSU4sIDEpOworCisJLyogRW5hYmxlIE5hbmRGbGFzaCAqLworCWF0OTFfc2V0X2dwaW9fb3V0cHV0KENPTkZJR19TWVNfTkFORF9FTkFCTEVfUElOLCAxKTsKK30KKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX01BQ0IKK3N0YXRpYyB2b2lkIGF0OTFzYW05bTEwZzQ1ZWtfbWFjYl9od19pbml0KHZvaWQpCit7CisJdW5zaWduZWQgbG9uZyByc3RjOworCisJLyogRW5hYmxlIGNsb2NrICovCisJYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QTUNfUENFUiwgMSA8PCBBVDkxU0FNOUc0NV9JRF9FTUFDKTsKKworCS8qCisJICogRGlzYWJsZSBwdWxsLXVwIG9uOgorCSAqCVJYRFYgKFBBMTUpID0+IFBIWSBub3JtYWwgbW9kZSAobm90IFRlc3QgbW9kZSkKKwkgKiAJRVJYMCAoUEExMikgPT4gUEhZIEFERFIwCisJICoJRVJYMSAoUEExMykgPT4gUEhZIEFERFIxID0+IFBIWUFERFIgPSAweDAKKwkgKgorCSAqIFBIWSBoYXMgaW50ZXJuYWwgcHVsbC1kb3duCisJICovCisJd3JpdGVsKHBpbl90b19tYXNrKEFUOTFfUElOX1BBMTUpIHwKKwkgICAgICAgcGluX3RvX21hc2soQVQ5MV9QSU5fUEExMikgfAorCSAgICAgICBwaW5fdG9fbWFzayhBVDkxX1BJTl9QQTEzKSwKKwkgICAgICAgcGluX3RvX2NvbnRyb2xsZXIoQVQ5MV9QSU5fUEEwKSArIFBJT19QVURSKTsKKworCXJzdGMgPSBhdDkxX3N5c19yZWFkKEFUOTFfUlNUQ19NUik7CisKKwkvKiBOZWVkIHRvIHJlc2V0IFBIWSAtPiA1MDBtcyByZXNldCAqLworCWF0OTFfc3lzX3dyaXRlKEFUOTFfUlNUQ19NUiwgQVQ5MV9SU1RDX0tFWSB8CisJCQkJICAgICAoQVQ5MV9SU1RDX0VSU1RMICYgKDB4MEQgPDwgOCkpIHwKKwkJCQkgICAgIEFUOTFfUlNUQ19VUlNURU4pOworCisJYXQ5MV9zeXNfd3JpdGUoQVQ5MV9SU1RDX0NSLCBBVDkxX1JTVENfS0VZIHwgQVQ5MV9SU1RDX0VYVFJTVCk7CisKKwkvKiBXYWl0IGZvciBlbmQgaGFyZHdhcmUgcmVzZXQgKi8KKwl3aGlsZSAoIShhdDkxX3N5c19yZWFkKEFUOTFfUlNUQ19TUikgJiBBVDkxX1JTVENfTlJTVEwpKTsKKworCS8qIFJlc3RvcmUgTlJTVCB2YWx1ZSAqLworCWF0OTFfc3lzX3dyaXRlKEFUOTFfUlNUQ19NUiwgQVQ5MV9SU1RDX0tFWSB8CisJCQkJICAgICAocnN0YykgfAorCQkJCSAgICAgQVQ5MV9SU1RDX1VSU1RFTik7CisKKwkvKiBSZS1lbmFibGUgcHVsbC11cCAqLworCXdyaXRlbChwaW5fdG9fbWFzayhBVDkxX1BJTl9QQTE1KSB8CisJICAgICAgIHBpbl90b19tYXNrKEFUOTFfUElOX1BBMTIpIHwKKwkgICAgICAgcGluX3RvX21hc2soQVQ5MV9QSU5fUEExMyksCisJICAgICAgIHBpbl90b19jb250cm9sbGVyKEFUOTFfUElOX1BBMCkgKyBQSU9fUFVFUik7CisKKwlhdDkxX21hY2JfaHdfaW5pdCgpOworfQorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfTENECisKK3ZpZGluZm9fdCBwYW5lbF9pbmZvID0geworCXZsX2NvbDoJCTQ4MCwKKwl2bF9yb3c6CQkyNzIsCisJdmxfY2xrOgkJOTAwMDAwMCwKKwl2bF9zeW5jOglBVE1FTF9MQ0RDX0lOVkxJTkVfTk9STUFMIHwKKwkJCUFUTUVMX0xDRENfSU5WRlJBTUVfTk9STUFMLAorCXZsX2JwaXg6CTMsCisJdmxfdGZ0OgkJMSwKKwl2bF9oc3luY19sZW46CTQ1LAorCXZsX2xlZnRfbWFyZ2luOgkxLAorCXZsX3JpZ2h0X21hcmdpbjoxLAorCXZsX3ZzeW5jX2xlbjoJMSwKKwl2bF91cHBlcl9tYXJnaW46NDAsCisJdmxfbG93ZXJfbWFyZ2luOjEsCisJbW1pbzoJCUFUOTFTQU05RzQ1X0xDRENfQkFTRSwKK307CisKKwordm9pZCBsY2RfZW5hYmxlKHZvaWQpCit7CisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEU2LCAxKTsJLyogcG93ZXIgdXAgKi8KK30KKwordm9pZCBsY2RfZGlzYWJsZSh2b2lkKQoreworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BFNiwgMCk7CS8qIHBvd2VyIGRvd24gKi8KK30KKworc3RhdGljIHZvaWQgYXQ5MXNhbTltMTBnNDVla19sY2RfaHdfaW5pdCh2b2lkKQoreworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BFMCwgMCk7CS8qIExDRERQV1IgKi8KKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QRTIsIDApOwkvKiBMQ0RDQyAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BFMywgMCk7CS8qIExDRFZTWU5DICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEU0LCAwKTsJLyogTENESFNZTkMgKi8KKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QRTUsIDApOwkvKiBMQ0RET1RDSyAqLworCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEU3LCAwKTsJLyogTENERDAgKi8KKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QRTgsIDApOwkvKiBMQ0REMSAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BFOSwgMCk7CS8qIExDREQyICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEUxMCwgMCk7CS8qIExDREQzICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEUxMSwgMCk7CS8qIExDREQ0ICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEUxMiwgMCk7CS8qIExDREQ1ICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEUxMywgMCk7CS8qIExDREQ2ICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEUxNCwgMCk7CS8qIExDREQ3ICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEUxNSwgMCk7CS8qIExDREQ4ICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEUxNiwgMCk7CS8qIExDREQ5ICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEUxNywgMCk7CS8qIExDREQxMCAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BFMTgsIDApOwkvKiBMQ0REMTEgKi8KKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QRTE5LCAwKTsJLyogTENERDEyICovCisJYXQ5MV9zZXRfQl9wZXJpcGgoQVQ5MV9QSU5fUEUyMCwgMCk7CS8qIExDREQxMyAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BFMjEsIDApOwkvKiBMQ0REMTQgKi8KKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QRTIyLCAwKTsJLyogTENERDE1ICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEUyMywgMCk7CS8qIExDREQxNiAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BFMjQsIDApOwkvKiBMQ0REMTcgKi8KKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QRTI1LCAwKTsJLyogTENERDE4ICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEUyNiwgMCk7CS8qIExDREQxOSAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BFMjcsIDApOwkvKiBMQ0REMjAgKi8KKwlhdDkxX3NldF9CX3BlcmlwaChBVDkxX1BJTl9QRTI4LCAwKTsJLyogTENERDIxICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEUyOSwgMCk7CS8qIExDREQyMiAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BFMzAsIDApOwkvKiBMQ0REMjMgKi8KKworCWF0OTFfc3lzX3dyaXRlKEFUOTFfUE1DX1BDRVIsIDEgPDwgQVQ5MVNBTTlHNDVfSURfTENEQyk7CisKKwlnZC0+ZmJfYmFzZSA9IENPTkZJR19BVDkxU0FNOUc0NV9MQ0RfQkFTRTsKK30KKworI2lmZGVmIENPTkZJR19MQ0RfSU5GTworI2luY2x1ZGUgPG5hbmQuaD4KKyNpbmNsdWRlIDx2ZXJzaW9uLmg+CisKK3ZvaWQgbGNkX3Nob3dfYm9hcmRfaW5mbyh2b2lkKQoreworCXVsb25nIGRyYW1fc2l6ZSwgbmFuZF9zaXplOworCWludCBpOworCWNoYXIgdGVtcFszMl07CisKKwlsY2RfcHJpbnRmICgiJXNcbiIsIFVfQk9PVF9WRVJTSU9OKTsKKwlsY2RfcHJpbnRmICgiKEMpIDIwMDggQVRNRUwgQ29ycFxuIik7CisJbGNkX3ByaW50ZiAoImF0OTFzdXBwb3J0QGF0bWVsLmNvbVxuIik7CisJbGNkX3ByaW50ZiAoIiVzIENQVSBhdCAlcyBNSHpcbiIsCisJCUFUOTFfQ1BVX05BTUUsCisJCXN0cm1oeih0ZW1wLCBnZXRfY3B1X2Nsa19yYXRlKCkpKTsKKworCWRyYW1fc2l6ZSA9IDA7CisJZm9yIChpID0gMDsgaSA8IENPTkZJR19OUl9EUkFNX0JBTktTOyBpKyspCisJCWRyYW1fc2l6ZSArPSBnZC0+YmQtPmJpX2RyYW1baV0uc2l6ZTsKKwluYW5kX3NpemUgPSAwOworCWZvciAoaSA9IDA7IGkgPCBDT05GSUdfU1lTX01BWF9OQU5EX0RFVklDRTsgaSsrKQorCQluYW5kX3NpemUgKz0gbmFuZF9pbmZvW2ldLnNpemU7CisJbGNkX3ByaW50ZiAoIiAgJWxkIE1CIFNEUkFNLCAlbGQgTUIgTkFORFxuIiwKKwkJZHJhbV9zaXplID4+IDIwLAorCQluYW5kX3NpemUgPj4gMjAgKTsKK30KKyNlbmRpZiAvKiBDT05GSUdfTENEX0lORk8gKi8KKyNlbmRpZgorCitpbnQgYm9hcmRfaW5pdCh2b2lkKQoreworCS8qIEVuYWJsZSBDdHJsYyAqLworCWNvbnNvbGVfaW5pdF9mKCk7CisKKwkvKiBhcmNoIG51bWJlciBvZiBBVDkxU0FNOU0xMEc0NUVLLUJvYXJkICovCisjaWZkZWYgQ09ORklHX0FUOTFTQU05TTEwRzQ1RUsKKwlnZC0+YmQtPmJpX2FyY2hfbnVtYmVyID0gTUFDSF9UWVBFX0FUOTFTQU05TTEwRzQ1RUs7CisjZWxpZiBkZWZpbmVkIENPTkZJR19BVDkxU0FNOUc0NUVLRVMKKwlnZC0+YmQtPmJpX2FyY2hfbnVtYmVyID0gTUFDSF9UWVBFX0FUOTFTQU05RzQ1RUtFUzsKKyNlbmRpZgorCS8qIGFkcmVzcyBvZiBib290IHBhcmFtZXRlcnMgKi8KKwlnZC0+YmQtPmJpX2Jvb3RfcGFyYW1zID0gUEhZU19TRFJBTSArIDB4MTAwOworCisJYXQ5MV9zZXJpYWxfaHdfaW5pdCgpOworI2lmZGVmIENPTkZJR19DTURfTkFORAorCWF0OTFzYW05bTEwZzQ1ZWtfbmFuZF9od19pbml0KCk7CisjZW5kaWYKKyNpZmRlZiBDT05GSUdfSEFTX0RBVEFGTEFTSAorCWF0OTFfc3BpMF9od19pbml0KDEgPDwgMCk7CisjZW5kaWYKKyNpZmRlZiBDT05GSUdfQVRNRUxfU1BJCisJYXQ5MV9zcGkwX2h3X2luaXQoMSA8PCA0KTsKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX01BQ0IKKwlhdDkxc2FtOW0xMGc0NWVrX21hY2JfaHdfaW5pdCgpOworI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfTENECisJYXQ5MXNhbTltMTBnNDVla19sY2RfaHdfaW5pdCgpOworI2VuZGlmCisJcmV0dXJuIDA7Cit9CisKK2ludCBkcmFtX2luaXQodm9pZCkKK3sKKwlnZC0+YmQtPmJpX2RyYW1bMF0uc3RhcnQgPSBQSFlTX1NEUkFNOworCWdkLT5iZC0+YmlfZHJhbVswXS5zaXplID0gUEhZU19TRFJBTV9TSVpFOworCXJldHVybiAwOworfQorCisjaWZkZWYgQ09ORklHX1JFU0VUX1BIWV9SCit2b2lkIHJlc2V0X3BoeSh2b2lkKQoreworI2lmZGVmIENPTkZJR19NQUNCCisJLyoKKwkgKiBJbml0aWFsaXplIGV0aGVybmV0IEhXIGFkZHIgcHJpb3IgdG8gc3RhcnRpbmcgTGludXgsCisJICogbmVlZGVkIGZvciBuZnNyb290CisJICovCisJZXRoX2luaXQoZ2QtPmJkKTsKKyNlbmRpZgorfQorI2VuZGlmCisKK2ludCBib2FyZF9ldGhfaW5pdChiZF90ICpiaXMpCit7CisJaW50IHJjID0gMDsKKyNpZmRlZiBDT05GSUdfTUFDQgorCXJjID0gbWFjYl9ldGhfaW5pdGlhbGl6ZSgwLCAodm9pZCAqKUFUOTFTQU05RzQ1X0JBU0VfRU1BQywgMHgwMCk7CisjZW5kaWYKKwlyZXR1cm4gcmM7Cit9CisKKy8qIFNQSSBjaGlwIHNlbGVjdCBjb250cm9sICovCisjaWZkZWYgQ09ORklHX0FUTUVMX1NQSQorI2luY2x1ZGUgPHNwaS5oPgorCitpbnQgc3BpX2NzX2lzX3ZhbGlkKHVuc2lnbmVkIGludCBidXMsIHVuc2lnbmVkIGludCBjcykKK3sKKwlyZXR1cm4gYnVzID09IDAgJiYgY3MgPCAyOworfQorCit2b2lkIHNwaV9jc19hY3RpdmF0ZShzdHJ1Y3Qgc3BpX3NsYXZlICpzbGF2ZSkKK3sKKwlzd2l0Y2goc2xhdmUtPmNzKSB7CisJCWNhc2UgMToKKwkJCWF0OTFfc2V0X2dwaW9fb3V0cHV0KEFUOTFfUElOX1BCMTgsIDApOworCQkJYnJlYWs7CisJCWNhc2UgMDoKKwkJZGVmYXVsdDoKKwkJCWF0OTFfc2V0X2dwaW9fb3V0cHV0KEFUOTFfUElOX1BCMywgMCk7CisJCQlicmVhazsKKwl9Cit9CisKK3ZvaWQgc3BpX2NzX2RlYWN0aXZhdGUoc3RydWN0IHNwaV9zbGF2ZSAqc2xhdmUpCit7CisJc3dpdGNoKHNsYXZlLT5jcykgeworCQljYXNlIDE6CisJCQlhdDkxX3NldF9ncGlvX291dHB1dChBVDkxX1BJTl9QQjE4LCAxKTsKKwkJCWJyZWFrOworCQljYXNlIDA6CisJCWRlZmF1bHQ6CisJCQlhdDkxX3NldF9ncGlvX291dHB1dChBVDkxX1BJTl9QQjMsIDEpOworCQlicmVhazsKKwl9Cit9CisjZW5kaWYgLyogQ09ORklHX0FUTUVMX1NQSSAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvYXRtZWwvYXQ5MXNhbTltMTBnNDVlay9jb25maWcubWsgYi9ib2FyZC9hdG1lbC9hdDkxc2FtOW0xMGc0NWVrL2NvbmZpZy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmU5ZDAzCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvYXRtZWwvYXQ5MXNhbTltMTBnNDVlay9jb25maWcubWsKQEAgLTAsMCArMSBAQAorVEVYVF9CQVNFID0gMHg3M2YwMDAwMApkaWZmIC0tZ2l0IGEvYm9hcmQvYXRtZWwvYXQ5MXNhbTltMTBnNDVlay9sZWQuYyBiL2JvYXJkL2F0bWVsL2F0OTFzYW05bTEwZzQ1ZWsvbGVkLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY1OWEyZAotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL2F0bWVsL2F0OTFzYW05bTEwZzQ1ZWsvbGVkLmMKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNy0yMDA4CisgKiBTdGVsaWFuIFBvcCA8c3RlbGlhbi5wb3BAbGVhZHRlY2hkZXNpZ24uY29tPgorICogTGVhZCBUZWNoIERlc2lnbiA8d3d3LmxlYWR0ZWNoZGVzaWduLmNvbT4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9hdDkxc2FtOWc0NS5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2F0OTFfcG1jLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvZ3Bpby5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2lvLmg+CisKK3ZvaWQgY29sb3VyZWRfTEVEX2luaXQodm9pZCkKK3sKKwkvKiBFbmFibGUgY2xvY2sgKi8KKwlhdDkxX3N5c193cml0ZShBVDkxX1BNQ19QQ0VSLCAxIDw8IEFUOTFTQU05RzQ1X0lEX1BJT0RFKTsKKworCWF0OTFfc2V0X2dwaW9fb3V0cHV0KENPTkZJR19SRURfTEVELCAxKTsKKwlhdDkxX3NldF9ncGlvX291dHB1dChDT05GSUdfR1JFRU5fTEVELCAxKTsKKworCWF0OTFfc2V0X2dwaW9fdmFsdWUoQ09ORklHX1JFRF9MRUQsIDApOworCWF0OTFfc2V0X2dwaW9fdmFsdWUoQ09ORklHX0dSRUVOX0xFRCwgMSk7Cit9CmRpZmYgLS1naXQgYS9jcHUvYXJtOTI2ZWpzL2F0OTEvTWFrZWZpbGUgYi9jcHUvYXJtOTI2ZWpzL2F0OTEvTWFrZWZpbGUKaW5kZXggM2RhODlmNC4uNjkwNTFjMSAxMDA2NDQKLS0tIGEvY3B1L2FybTkyNmVqcy9hdDkxL01ha2VmaWxlCisrKyBiL2NwdS9hcm05MjZlanMvYXQ5MS9NYWtlZmlsZQpAQCAtMzEsNiArMzEsOCBAQAogQ09CSlMtJChDT05GSUdfQVQ5MVNBTTkyNjEpCSs9IGF0OTFzYW05MjYxX2RldmljZXMubwogQ09CSlMtJChDT05GSUdfQVQ5MVNBTTkyNjMpCSs9IGF0OTFzYW05MjYzX2RldmljZXMubwogQ09CSlMtJChDT05GSUdfQVQ5MVNBTTlSTCkJKz0gYXQ5MXNhbTlybF9kZXZpY2VzLm8KK0NPQkpTLSQoQ09ORklHX0FUOTFTQU05TTEwRzQ1KQkrPSBhdDkxc2FtOW0xMGc0NV9kZXZpY2VzLm8KK0NPQkpTLSQoQ09ORklHX0FUOTFTQU05RzQ1KQkrPSBhdDkxc2FtOW0xMGc0NV9kZXZpY2VzLm8KIENPQkpTLSQoQ09ORklHX0FUOTFfTEVEKQkrPSBsZWQubwogQ09CSlMteSArPSBjbG9jay5vCiBDT0JKUy15ICs9IGNwdS5vCmRpZmYgLS1naXQgYS9jcHUvYXJtOTI2ZWpzL2F0OTEvYXQ5MXNhbTltMTBnNDVfZGV2aWNlcy5jIGIvY3B1L2FybTkyNmVqcy9hdDkxL2F0OTFzYW05bTEwZzQ1X2RldmljZXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGQ5MGYyCi0tLSAvZGV2L251bGwKKysrIGIvY3B1L2FybTkyNmVqcy9hdDkxL2F0OTFzYW05bTEwZzQ1X2RldmljZXMuYwpAQCAtMCwwICsxLDE3NSBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAwNy0yMDA4CisgKiBTdGVsaWFuIFBvcCA8c3RlbGlhbi5wb3BAbGVhZHRlY2hkZXNpZ24uY29tPgorICogTGVhZCBUZWNoIERlc2lnbiA8d3d3LmxlYWR0ZWNoZGVzaWduLmNvbT4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9hdDkxX2NvbW1vbi5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2F0OTFfcG1jLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvZ3Bpby5oPgorI2luY2x1ZGUgPGFzbS9hcmNoL2lvLmg+CisKK3ZvaWQgYXQ5MV9zZXJpYWwwX2h3X2luaXQodm9pZCkKK3sKKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QQjE5LCAxKTsJLyogVFhEMCAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BCMTgsIDApOwkvKiBSWEQwICovCisJYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QTUNfUENFUiwgMSA8PCBBVDkxU0FNOUc0NV9JRF9VUzApOworfQorCit2b2lkIGF0OTFfc2VyaWFsMV9od19pbml0KHZvaWQpCit7CisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEI0LCAxKTsJCS8qIFRYRDEgKi8KKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QQjUsIDApOwkJLyogUlhEMSAqLworCWF0OTFfc3lzX3dyaXRlKEFUOTFfUE1DX1BDRVIsIDEgPDwgQVQ5MVNBTTlHNDVfSURfVVMxKTsKK30KKwordm9pZCBhdDkxX3NlcmlhbDJfaHdfaW5pdCh2b2lkKQoreworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BENiwgMSk7CQkvKiBUWEQyICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEQ3LCAwKTsJCS8qIFJYRDIgKi8KKwlhdDkxX3N5c193cml0ZShBVDkxX1BNQ19QQ0VSLCAxIDw8IEFUOTFTQU05RzQ1X0lEX1VTMik7Cit9CisKK3ZvaWQgYXQ5MV9zZXJpYWwzX2h3X2luaXQodm9pZCkKK3sKKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QQjEyLCAwKTsJLyogRFJYRCAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BCMTMsIDEpOwkvKiBEVFhEICovCisJYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QTUNfUENFUiwgMSA8PCBBVDkxX0lEX1NZUyk7OworfQorCit2b2lkIGF0OTFfc2VyaWFsX2h3X2luaXQodm9pZCkKK3sKKyNpZmRlZiBDT05GSUdfVVNBUlQwCisJYXQ5MV9zZXJpYWwwX2h3X2luaXQoKTsKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1VTQVJUMQorCWF0OTFfc2VyaWFsMV9od19pbml0KCk7CisjZW5kaWYKKworI2lmZGVmIENPTkZJR19VU0FSVDIKKwlhdDkxX3NlcmlhbDJfaHdfaW5pdCgpOworI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfVVNBUlQzCS8qIERCR1UgKi8KKwlhdDkxX3NlcmlhbDNfaHdfaW5pdCgpOworI2VuZGlmCit9CisKKyNpZmRlZiBDT05GSUdfQVRNRUxfU1BJCit2b2lkIGF0OTFfc3BpMF9od19pbml0KHVuc2lnbmVkIGxvbmcgY3NfbWFzaykKK3sKKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QQjAsIDApOwkvKiBTUEkwX01JU08gKi8KKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QQjEsIDApOwkvKiBTUEkwX01PU0kgKi8KKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QQjIsIDApOwkvKiBTUEkwX1NQQ0sgKi8KKworCS8qIEVuYWJsZSBjbG9jayAqLworCWF0OTFfc3lzX3dyaXRlKEFUOTFfUE1DX1BDRVIsIDEgPDwgQVQ5MVNBTTlHNDVfSURfU1BJMCk7CisKKwlpZiAoY3NfbWFzayAmICgxIDw8IDApKSB7CisJCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BCMywgMCk7CisJfQorCWlmIChjc19tYXNrICYgKDEgPDwgMSkpIHsKKwkJYXQ5MV9zZXRfQl9wZXJpcGgoQVQ5MV9QSU5fUEIxOCwgMCk7CisJfQorCWlmIChjc19tYXNrICYgKDEgPDwgMikpIHsKKwkJYXQ5MV9zZXRfQl9wZXJpcGgoQVQ5MV9QSU5fUEIxOSwgMCk7CisJfQorCWlmIChjc19tYXNrICYgKDEgPDwgMykpIHsKKwkJYXQ5MV9zZXRfQl9wZXJpcGgoQVQ5MV9QSU5fUEQyNywgMCk7CisJfQorCWlmIChjc19tYXNrICYgKDEgPDwgNCkpIHsKKwkJYXQ5MV9zZXRfZ3Bpb19vdXRwdXQoQVQ5MV9QSU5fUEIzLCAwKTsKKwl9CisJaWYgKGNzX21hc2sgJiAoMSA8PCA1KSkgeworCQlhdDkxX3NldF9ncGlvX291dHB1dChBVDkxX1BJTl9QQjE4LCAwKTsKKwl9CisJaWYgKGNzX21hc2sgJiAoMSA8PCA2KSkgeworCQlhdDkxX3NldF9ncGlvX291dHB1dChBVDkxX1BJTl9QQjE5LCAwKTsKKwl9CisJaWYgKGNzX21hc2sgJiAoMSA8PCA3KSkgeworCQlhdDkxX3NldF9ncGlvX291dHB1dChBVDkxX1BJTl9QRDI3LCAwKTsKKwl9Cit9CisKK3ZvaWQgYXQ5MV9zcGkxX2h3X2luaXQodW5zaWduZWQgbG9uZyBjc19tYXNrKQoreworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BCMTQsIDApOwkvKiBTUEkxX01JU08gKi8KKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QQjE1LCAwKTsJLyogU1BJMV9NT1NJICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEIxNiwgMCk7CS8qIFNQSTFfU1BDSyAqLworCisJLyogRW5hYmxlIGNsb2NrICovCisJYXQ5MV9zeXNfd3JpdGUoQVQ5MV9QTUNfUENFUiwgMSA8PCBBVDkxU0FNOUc0NV9JRF9TUEkxKTsKKworCWlmIChjc19tYXNrICYgKDEgPDwgMCkpIHsKKwkJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEIxNywgMCk7CisJfQorCWlmIChjc19tYXNrICYgKDEgPDwgMSkpIHsKKwkJYXQ5MV9zZXRfQl9wZXJpcGgoQVQ5MV9QSU5fUEQyOCwgMCk7CisJfQorCWlmIChjc19tYXNrICYgKDEgPDwgMikpIHsKKwkJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEQxOCwgMCk7CisJfQorCWlmIChjc19tYXNrICYgKDEgPDwgMykpIHsKKwkJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEQxOSwgMCk7CisJfQorCWlmIChjc19tYXNrICYgKDEgPDwgNCkpIHsKKwkJYXQ5MV9zZXRfZ3Bpb19vdXRwdXQoQVQ5MV9QSU5fUEIxNywgMCk7CisJfQorCWlmIChjc19tYXNrICYgKDEgPDwgNSkpIHsKKwkJYXQ5MV9zZXRfZ3Bpb19vdXRwdXQoQVQ5MV9QSU5fUEQyOCwgMCk7CisJfQorCWlmIChjc19tYXNrICYgKDEgPDwgNikpIHsKKwkJYXQ5MV9zZXRfZ3Bpb19vdXRwdXQoQVQ5MV9QSU5fUEQxOCwgMCk7CisJfQorCWlmIChjc19tYXNrICYgKDEgPDwgNykpIHsKKwkJYXQ5MV9zZXRfZ3Bpb19vdXRwdXQoQVQ5MV9QSU5fUEQxOSwgMCk7CisJfQorCit9CisjZW5kaWYKKworI2lmZGVmIENPTkZJR19NQUNCCit2b2lkIGF0OTFfbWFjYl9od19pbml0KHZvaWQpCit7CisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEExNywgMCk7CS8qIEVUWENLX0VSRUZDSyAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BBMTUsIDApOwkvKiBFUlhEViAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BBMTIsIDApOwkvKiBFUlgwICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEExMywgMCk7CS8qIEVSWDEgKi8KKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QQTE2LCAwKTsJLyogRVJYRVIgKi8KKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QQTE0LCAwKTsJLyogRVRYRU4gKi8KKwlhdDkxX3NldF9BX3BlcmlwaChBVDkxX1BJTl9QQTEwLCAwKTsJLyogRVRYMCAqLworCWF0OTFfc2V0X0FfcGVyaXBoKEFUOTFfUElOX1BBMTEsIDApOwkvKiBFVFgxICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEExOSwgMCk7CS8qIEVNRElPICovCisJYXQ5MV9zZXRfQV9wZXJpcGgoQVQ5MV9QSU5fUEExOCwgMCk7CS8qIEVNREMgKi8KKyNpZm5kZWYgQ09ORklHX1JNSUkKKwlhdDkxX3NldF9CX3BlcmlwaChBVDkxX1BJTl9QQTI5LCAwKTsJLyogRUNSUyAqLworCWF0OTFfc2V0X0JfcGVyaXBoKEFUOTFfUElOX1BBMzAsIDApOwkvKiBFQ09MICovCisJYXQ5MV9zZXRfQl9wZXJpcGgoQVQ5MV9QSU5fUEE4LCAgMCk7CS8qIEVSWDIgKi8KKwlhdDkxX3NldF9CX3BlcmlwaChBVDkxX1BJTl9QQTksICAwKTsJLyogRVJYMyAqLworCWF0OTFfc2V0X0JfcGVyaXBoKEFUOTFfUElOX1BBMjgsIDApOwkvKiBFUlhDSyAqLworCWF0OTFfc2V0X0JfcGVyaXBoKEFUOTFfUElOX1BBNiwgIDApOwkvKiBFVFgyICovCisJYXQ5MV9zZXRfQl9wZXJpcGgoQVQ5MV9QSU5fUEE3LCAgMCk7CS8qIEVUWDMgKi8KKwlhdDkxX3NldF9CX3BlcmlwaChBVDkxX1BJTl9QQTI3LCAwKTsJLyogRVRYRVIgKi8KKyNlbmRpZgorfQorI2VuZGlmCmRpZmYgLS1naXQgYS9jcHUvYXJtOTI2ZWpzL2F0OTEvY2xvY2suYyBiL2NwdS9hcm05MjZlanMvYXQ5MS9jbG9jay5jCmluZGV4IDlmMDM0NjguLjU3NGY0ODggMTAwNjQ0Ci0tLSBhL2NwdS9hcm05MjZlanMvYXQ5MS9jbG9jay5jCisrKyBiL2NwdS9hcm05MjZlanMvYXQ5MS9jbG9jay5jCkBAIC0xODMsMTUgKzE4MywyMyBAQAogCSAqIEZvciBub3csIGFzc3VtZSB0aGlzIHBhcmVudGFnZSB3b24ndCBjaGFuZ2UuCiAJICovCiAJbWNrciA9IGF0OTFfc3lzX3JlYWQoQVQ5MV9QTUNfTUNLUik7CisjaWYgZGVmaW5lZChDT05GSUdfQVQ5MVNBTTlHNDUpIHx8IGRlZmluZWQoQ09ORklHX0FUOTFTQU05TTEwRzQ1KQorCS8qIHBsbGEgZGl2aXNvciBieSAyICovCisJcGxsYV9yYXRlX2h6IC89ICgxIDw8ICgobWNrciAmIDEgPDwgMTIpID4+IDEyKSk7CisjZW5kaWYKIAlmcmVxID0gbWNrX3JhdGVfaHogPSBhdDkxX2Nzc190b19yYXRlKG1ja3IgJiBBVDkxX1BNQ19DU1MpOworCiAJZnJlcSAvPSAoMSA8PCAoKG1ja3IgJiBBVDkxX1BNQ19QUkVTKSA+PiAyKSk7CQkJLyogcHJlc2NhbGUgKi8KICNpZiBkZWZpbmVkKENPTkZJR19BVDkxUk05MjAwKQogCW1ja19yYXRlX2h6ID0gZnJlcSAvICgxICsgKChtY2tyICYgQVQ5MV9QTUNfTURJVikgPj4gOCkpOwkvKiBtZGl2ICovCiAjZWxpZiBkZWZpbmVkKENPTkZJR19BVDkxU0FNOUcyMCkKIAltY2tfcmF0ZV9oeiA9IChtY2tyICYgQVQ5MV9QTUNfTURJVikgPwotCQlmcmVxIC8gKChtY2tyICYgQVQ5MV9QTUNfTURJVikgPj4gNykgOiBmcmVxOwkvKiBtZGl2IDsgKHggPj4gNykgPSAoKHggPj4gOCkgKiAyKSAqLworCQlmcmVxIC8gKChtY2tyICYgQVQ5MV9QTUNfTURJVikgPj4gNykgOiBmcmVxOwkJLyogbWRpdiA7ICh4ID4+IDcpID0gKCh4ID4+IDgpICogMikgKi8KIAlpZiAobWNrciAmIEFUOTFfUE1DX1BESVYpCi0JCWZyZXEgLz0gMjsJCS8qIHByb2Nlc3NvciBjbG9jayBkaXZpc2lvbiAqLworCQlmcmVxIC89IDI7CQkJCQkJLyogcHJvY2Vzc29yIGNsb2NrIGRpdmlzaW9uICovCisjZWxpZiBkZWZpbmVkKENPTkZJR19BVDkxU0FNOUc0NSkgfHwgZGVmaW5lZChDT05GSUdfQVQ5MVNBTTlNMTBHNDUpCisJbWNrX3JhdGVfaHogPSAobWNrciAmIEFUOTFfUE1DX01ESVYpID09IEFUOTFTQU05X1BNQ19NRElWXzMgPworCQlmcmVxIC8gMyA6IGZyZXEgLyAoMSA8PCAoKG1ja3IgJiBBVDkxX1BNQ19NRElWKSA+PiA4KSk7CS8qIG1kaXYgKi8KICNlbHNlCiAJbWNrX3JhdGVfaHogPSBmcmVxIC8gKDEgPDwgKChtY2tyICYgQVQ5MV9QTUNfTURJVikgPj4gOCkpOwkvKiBtZGl2ICovCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RvYy9SRUFETUUuYXQ5MSBiL2RvYy9SRUFETUUuYXQ5MQppbmRleCA0YTJjNTZiLi4yNjlkMDcyIDEwMDY0NAotLS0gYS9kb2MvUkVBRE1FLmF0OTEKKysrIGIvZG9jL1JFQURNRS5hdDkxCkBAIC03NSw2ICs3NSwyNiBAQAogCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQVQ5MVNBTTlNMTBHNDVFSworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK01lbW9yeSBtYXAKKwkweDIwMDAwMDAwIC0gMjNGRkZGRkYJU0RSQU0gKDY0IE1CKQorCTB4QzAwMDAwMDAgLSBDeHh4eHh4eAlBdG1lbCBEYXRhZmxhc2ggY2FyZCAoSjEyKQorCitFbnZpcm9ubWVudCB2YXJpYWJsZXMKKworCVUtQm9vdCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgY2FuIGJlIHN0b3JlZCBhdCBkaWZmZXJlbnQgcGxhY2VzOgorCQktIERhdGFmbGFzaCBvbiBTUEkgY2hpcCBzZWxlY3QgMCAoZGF0YWZsYXNoIGNhcmQpCisJCS0gTmFuZCBmbGFzaC4KKworCVlvdSBjYW4gY2hvb3NlIHlvdXIgc3RvcmFnZSBsb2NhdGlvbiBhdCBjb25maWcgc3RlcCAoaGVyZSBmb3IgYXQ5MXNhbTltMTBnNDVlaykgOgorCQltYWtlIGF0OTFzYW05bTEwZzQ1ZWtfY29uZmlnCQkJLSB1c2UgZGF0YSBmbGFzaCAoc3BpIGNzMCkgKGRlZmF1bHQpCisJCW1ha2UgYXQ5MXNhbTltMTBnNDVla19uYW5kZmxhc2hfY29uZmlnCQktIHVzZSBuYW5kIGZsYXNoCisJCW1ha2UgYXQ5MXNhbTltMTBnNDVla19kYXRhZmxhc2hfY3MwX2NvbmZpZwktIHVzZSBkYXRhIGZsYXNoIChzcGkgY3MwKQorCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogQVQ5MVNBTTlSTEVLCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWFjYi5jIGIvZHJpdmVycy9uZXQvbWFjYi5jCmluZGV4IDZkZTBhMDQuLmMxODQzNTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21hY2IuYworKysgYi9kcml2ZXJzL25ldC9tYWNiLmMKQEAgLTQ0NywxNCArNDQ3LDE2IEBACiAJLyogY2hvb3NlIFJNSUkgb3IgTUlJIG1vZGUuIFRoaXMgZGVwZW5kcyBvbiB0aGUgYm9hcmQgKi8KICNpZmRlZiBDT05GSUdfUk1JSQogI2lmIGRlZmluZWQoQ09ORklHX0FUOTFDQVA5KSB8fCBkZWZpbmVkKENPTkZJR19BVDkxU0FNOTI2MCkgfHwgXAotICAgIGRlZmluZWQoQ09ORklHX0FUOTFTQU05MjYzKSB8fCBkZWZpbmVkKENPTkZJR19BVDkxU0FNOUcyMCkKKyAgICBkZWZpbmVkKENPTkZJR19BVDkxU0FNOTI2MykgfHwgZGVmaW5lZChDT05GSUdfQVQ5MVNBTTlHMjApIHx8IFwKKwlkZWZpbmVkKENPTkZJR19BVDkxU0FNOUc0NSkgfHwgZGVmaW5lZChDT05GSUdfQVQ5MVNBTTlNMTBHNDUpCiAJbWFjYl93cml0ZWwobWFjYiwgVVNSSU8sIE1BQ0JfQklUKFJNSUkpIHwgTUFDQl9CSVQoQ0xLRU4pKTsKICNlbHNlCiAJbWFjYl93cml0ZWwobWFjYiwgVVNSSU8sIDApOwogI2VuZGlmCiAjZWxzZQogI2lmIGRlZmluZWQoQ09ORklHX0FUOTFDQVA5KSB8fCBkZWZpbmVkKENPTkZJR19BVDkxU0FNOTI2MCkgfHwgXAotICAgIGRlZmluZWQoQ09ORklHX0FUOTFTQU05MjYzKSB8fCBkZWZpbmVkKENPTkZJR19BVDkxU0FNOUcyMCkKKyAgICBkZWZpbmVkKENPTkZJR19BVDkxU0FNOTI2MykgfHwgZGVmaW5lZChDT05GSUdfQVQ5MVNBTTlHMjApIHx8IFwKKwlkZWZpbmVkKENPTkZJR19BVDkxU0FNOUc0NSkgfHwgZGVmaW5lZChDT05GSUdfQVQ5MVNBTTlNMTBHNDUpCiAJbWFjYl93cml0ZWwobWFjYiwgVVNSSU8sIE1BQ0JfQklUKENMS0VOKSk7CiAjZWxzZQogCW1hY2Jfd3JpdGVsKG1hY2IsIFVTUklPLCBNQUNCX0JJVChNSUkpKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTEvYXQ5MV9wbWMuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTEvYXQ5MV9wbWMuaAppbmRleCBhODI5NTVjLi45ZmU5NGM3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxL2F0OTFfcG1jLmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MS9hdDkxX3BtYy5oCkBAIC04OSw2ICs4OSw3IEBACiAjZGVmaW5lCQkJQVQ5MVNBTTlfUE1DX01ESVZfMQkJKDAgPDwgOCkJLyogW1NBTTksQ0FQOSBvbmx5XSAqLwogI2RlZmluZQkJCUFUOTFTQU05X1BNQ19NRElWXzIJCSgxIDw8IDgpCiAjZGVmaW5lCQkJQVQ5MVNBTTlfUE1DX01ESVZfNAkJKDIgPDwgOCkKKyNkZWZpbmUJCQlBVDkxU0FNOV9QTUNfTURJVl8zCQkoMyA8PCA4KQkvKiBbc29tZSBTQU05IG9ubHldICovCiAjZGVmaW5lCQkJQVQ5MVNBTTlfUE1DX01ESVZfNgkJKDMgPDwgOCkKICNkZWZpbmUJCUFUOTFfUE1DX1BESVYJCSgxIDw8IDEyKQkJLyogUHJvY2Vzc29yIENsb2NrIERpdmlzaW9uIFtzb21lIFNBTTkgb25seV0gKi8KICNkZWZpbmUJCQlBVDkxX1BNQ19QRElWXzEJCQkoMCA8PCAxMikKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTEvYXQ5MXNhbTlfbWF0cml4LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxL2F0OTFzYW05X21hdHJpeC5oCmluZGV4IDkxM2YzNzQuLjZkOTcxODkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTEvYXQ5MXNhbTlfbWF0cml4LmgKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MS9hdDkxc2FtOV9tYXRyaXguaApAQCAtMjEsNiArMjEsOCBAQAogI2luY2x1ZGUgPGFzbS9hcmNoL2F0OTFzYW05cmxfbWF0cml4Lmg+CiAjZWxpZiBkZWZpbmVkKENPTkZJR19BVDkxQ0FQOSkKICNpbmNsdWRlIDxhc20vYXJjaC9hdDkxY2FwOV9tYXRyaXguaD4KKyNlbGlmIGRlZmluZWQoQ09ORklHX0FUOTFTQU05RzQ1KSB8fCBkZWZpbmVkKENPTkZJR19BVDkxU0FNOU0xMEc0NSkKKyNpbmNsdWRlIDxhc20vYXJjaC9hdDkxc2FtOWc0NV9tYXRyaXguaD4KICNlbHNlCiAjZXJyb3IgIlVuc3VwcG9ydGVkIEFUOTFTQU05L0NBUDkgcHJvY2Vzc29yIgogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxL2F0OTFzYW05ZzQ1LmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxL2F0OTFzYW05ZzQ1LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZlZWQ5YwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTEvYXQ5MXNhbTlnNDUuaApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENoaXAtc3BlY2lmaWMgaGVhZGVyIGZpbGUgZm9yIHRoZSBBVDkxU0FNOU0xeCBmYW1pbHkKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4IEF0bWVsIENvcnBvcmF0aW9uLgorICoKKyAqIENvbW1vbiBkZWZpbml0aW9ucy4KKyAqIEJhc2VkIG9uIEFUOTFTQU05RzQ1IHByZWxpbWluYXJ5IGRhdGFzaGVldC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICovCisKKyNpZm5kZWYgQVQ5MVNBTTlHNDVfSAorI2RlZmluZSBBVDkxU0FNOUc0NV9ICisKKy8qCisgKiBQZXJpcGhlcmFsIGlkZW50aWZpZXJzL2ludGVycnVwdHMuCisgKi8KKyNkZWZpbmUgQVQ5MV9JRF9GSVEJCTAJLyogQWR2YW5jZWQgSW50ZXJydXB0IENvbnRyb2xsZXIgKEZJUSkgKi8KKyNkZWZpbmUgQVQ5MV9JRF9TWVMJCTEJLyogU3lzdGVtIENvbnRyb2xsZXIgSW50ZXJydXB0ICovCisjZGVmaW5lIEFUOTFTQU05RzQ1X0lEX1BJT0EJMgkvKiBQYXJhbGxlbCBJL08gQ29udHJvbGxlciBBICovCisjZGVmaW5lIEFUOTFTQU05RzQ1X0lEX1BJT0IJMwkvKiBQYXJhbGxlbCBJL08gQ29udHJvbGxlciBCICovCisjZGVmaW5lIEFUOTFTQU05RzQ1X0lEX1BJT0MJNAkvKiBQYXJhbGxlbCBJL08gQ29udHJvbGxlciBDICovCisjZGVmaW5lIEFUOTFTQU05RzQ1X0lEX1BJT0RFCTUJLyogUGFyYWxsZWwgSS9PIENvbnRyb2xsZXIgRCBhbmQgRSAqLworI2RlZmluZSBBVDkxU0FNOUc0NV9JRF9UUk5HCTYJLyogVHJ1ZSBSYW5kb20gTnVtYmVyIEdlbmVyYXRvciAqLworI2RlZmluZSBBVDkxU0FNOUc0NV9JRF9VUzAJNwkvKiBVU0FSVCAwICovCisjZGVmaW5lIEFUOTFTQU05RzQ1X0lEX1VTMQk4CS8qIFVTQVJUIDEgKi8KKyNkZWZpbmUgQVQ5MVNBTTlHNDVfSURfVVMyCTkJLyogVVNBUlQgMiAqLworI2RlZmluZSBBVDkxU0FNOUc0NV9JRF9VUzMJMTAJLyogVVNBUlQgMyAqLworI2RlZmluZSBBVDkxU0FNOUc0NV9JRF9NQ0kwCTExCS8qIEhpZ2ggU3BlZWQgTXVsdGltZWRpYSBDYXJkIEludGVyZmFjZSAwICovCisjZGVmaW5lIEFUOTFTQU05RzQ1X0lEX1RXSTAJMTIJLyogVHdvLVdpcmUgSW50ZXJmYWNlIDAgKi8KKyNkZWZpbmUgQVQ5MVNBTTlHNDVfSURfVFdJMQkxMwkvKiBUd28tV2lyZSBJbnRlcmZhY2UgMSAqLworI2RlZmluZSBBVDkxU0FNOUc0NV9JRF9TUEkwCTE0CS8qIFNlcmlhbCBQZXJpcGhlcmFsIEludGVyZmFjZSAwICovCisjZGVmaW5lIEFUOTFTQU05RzQ1X0lEX1NQSTEJMTUJLyogU2VyaWFsIFBlcmlwaGVyYWwgSW50ZXJmYWNlIDEgKi8KKyNkZWZpbmUgQVQ5MVNBTTlHNDVfSURfU1NDMAkxNgkvKiBTeW5jaHJvbm91cyBTZXJpYWwgQ29udHJvbGxlciAwICovCisjZGVmaW5lIEFUOTFTQU05RzQ1X0lEX1NTQzEJMTcJLyogU3luY2hyb25vdXMgU2VyaWFsIENvbnRyb2xsZXIgMSAqLworI2RlZmluZSBBVDkxU0FNOUc0NV9JRF9UQ0IJMTgJLyogVGltZXIgQ291bnRlciAwLCAxLCAyLCAzLCA0IGFuZCA1ICovCisjZGVmaW5lIEFUOTFTQU05RzQ1X0lEX1BXTUMJMTkJLyogUHVsc2UgV2lkdGggTW9kdWxhdGlvbiBDb250cm9sbGVyICovCisjZGVmaW5lIEFUOTFTQU05RzQ1X0lEX1RTQwkyMAkvKiBUb3VjaCBTY3JlZW4gQURDIENvbnRyb2xsZXIgKi8KKyNkZWZpbmUgQVQ5MVNBTTlHNDVfSURfRE1BCTIxCS8qIERNQSBDb250cm9sbGVyICovCisjZGVmaW5lIEFUOTFTQU05RzQ1X0lEX1VIUEhTCTIyCS8qIFVTQiBIb3N0IEhpZ2ggU3BlZWQgKi8KKyNkZWZpbmUgQVQ5MVNBTTlHNDVfSURfTENEQwkyMwkvKiBMQ0QgQ29udHJvbGxlciAqLworI2RlZmluZSBBVDkxU0FNOUc0NV9JRF9BQzk3QwkyNAkvKiBBQzk3IENvbnRyb2xsZXIgKi8KKyNkZWZpbmUgQVQ5MVNBTTlHNDVfSURfRU1BQwkyNQkvKiBFdGhlcm5ldCBNQUMgKi8KKyNkZWZpbmUgQVQ5MVNBTTlHNDVfSURfSVNJCTI2CS8qIEltYWdlIFNlbnNvciBJbnRlcmZhY2UgKi8KKyNkZWZpbmUgQVQ5MVNBTTlHNDVfSURfVURQSFMJMjcJLyogVVNCIERldmljZSBIaWdoIFNwZWVkICovCisjZGVmaW5lIEFUOTFTQU05RzQ1X0lEX0FFU1RERVNTSEEgMjgJLyogQUVTICsgVC1ERVMgKyBTSEEgKi8KKyNkZWZpbmUgQVQ5MVNBTTlHNDVfSURfTUNJMQkyOQkvKiBIaWdoIFNwZWVkIE11bHRpbWVkaWEgQ2FyZCBJbnRlcmZhY2UgMSAqLworI2RlZmluZSBBVDkxU0FNOUc0NV9JRF9WREVDCTMwCS8qIFZpZGVvIERlY29kZXIgKi8KKyNkZWZpbmUgQVQ5MVNBTTlHNDVfSURfSVJRMAkzMQkvKiBBZHZhbmNlZCBJbnRlcnJ1cHQgQ29udHJvbGxlciAqLworCisvKgorICogVXNlciBQZXJpcGhlcmFsIHBoeXNpY2FsIGJhc2UgYWRkcmVzc2VzLgorICovCisjZGVmaW5lIEFUOTFTQU05RzQ1X0JBU0VfVURQSFMJCTB4ZmZmNzgwMDAKKyNkZWZpbmUgQVQ5MVNBTTlHNDVfQkFTRV9UQzAJCTB4ZmZmN2MwMDAKKyNkZWZpbmUgQVQ5MVNBTTlHNDVfQkFTRV9UQzEJCTB4ZmZmN2MwNDAKKyNkZWZpbmUgQVQ5MVNBTTlHNDVfQkFTRV9UQzIJCTB4ZmZmN2MwODAKKyNkZWZpbmUgQVQ5MVNBTTlHNDVfQkFTRV9NQ0kwCQkweGZmZjgwMDAwCisjZGVmaW5lIEFUOTFTQU05RzQ1X0JBU0VfVFdJMAkJMHhmZmY4NDAwMAorI2RlZmluZSBBVDkxU0FNOUc0NV9CQVNFX1RXSTEJCTB4ZmZmODgwMDAKKyNkZWZpbmUgQVQ5MVNBTTlHNDVfQkFTRV9VUzAJCTB4ZmZmOGMwMDAKKyNkZWZpbmUgQVQ5MVNBTTlHNDVfQkFTRV9VUzEJCTB4ZmZmOTAwMDAKKyNkZWZpbmUgQVQ5MVNBTTlHNDVfQkFTRV9VUzIJCTB4ZmZmOTQwMDAKKyNkZWZpbmUgQVQ5MVNBTTlHNDVfQkFTRV9VUzMJCTB4ZmZmOTgwMDAKKyNkZWZpbmUgQVQ5MVNBTTlHNDVfQkFTRV9TU0MwCQkweGZmZjljMDAwCisjZGVmaW5lIEFUOTFTQU05RzQ1X0JBU0VfU1NDMQkJMHhmZmZhMDAwMAorI2RlZmluZSBBVDkxU0FNOUc0NV9CQVNFX1NQSTAJCTB4ZmZmYTQwMDAKKyNkZWZpbmUgQVQ5MVNBTTlHNDVfQkFTRV9TUEkxCQkweGZmZmE4MDAwCisjZGVmaW5lIEFUOTFTQU05RzQ1X0JBU0VfQUM5N0MJCTB4ZmZmYWMwMDAKKyNkZWZpbmUgQVQ5MVNBTTlHNDVfQkFTRV9UU0MJCTB4ZmZmYjAwMDAKKyNkZWZpbmUgQVQ5MVNBTTlHNDVfQkFTRV9JU0kJCTB4ZmZmYjQwMDAKKyNkZWZpbmUgQVQ5MVNBTTlHNDVfQkFTRV9QV01DCQkweGZmZmI4MDAwCisjZGVmaW5lIEFUOTFTQU05RzQ1X0JBU0VfRU1BQwkJMHhmZmZiYzAwMAorI2RlZmluZSBBVDkxU0FNOUc0NV9CQVNFX0FFUwkJMHhmZmZjMDAwMAorI2RlZmluZSBBVDkxU0FNOUc0NV9CQVNFX1RERVMJCTB4ZmZmYzQwMDAKKyNkZWZpbmUgQVQ5MVNBTTlHNDVfQkFTRV9TSEEJCTB4ZmZmYzgwMDAKKyNkZWZpbmUgQVQ5MVNBTTlHNDVfQkFTRV9UUk5HCQkweGZmZmNjMDAwCisjZGVmaW5lIEFUOTFTQU05RzQ1X0JBU0VfTUNJMQkJMHhmZmZkMDAwMAorI2RlZmluZSBBVDkxU0FNOUc0NV9CQVNFX1RDMwkJMHhmZmZkNDAwMAorI2RlZmluZSBBVDkxU0FNOUc0NV9CQVNFX1RDNAkJMHhmZmZkNDA0MAorI2RlZmluZSBBVDkxU0FNOUc0NV9CQVNFX1RDNQkJMHhmZmZkNDA4MAorI2RlZmluZSBBVDkxX0JBU0VfU1lTCQkJMHhmZmZmZTIwMAorCisvKgorICogU3lzdGVtIFBlcmlwaGVyYWxzIChvZmZzZXQgZnJvbSBBVDkxX0JBU0VfU1lTKQorICovCisjZGVmaW5lIEFUOTFfRUNDCSgweGZmZmZlMjAwIC0gQVQ5MV9CQVNFX1NZUykKKyNkZWZpbmUgQVQ5MV9ERFJTRFJDMQkoMHhmZmZmZTQwMCAtIEFUOTFfQkFTRV9TWVMpCisjZGVmaW5lIEFUOTFfRERSU0RSQzAJKDB4ZmZmZmU2MDAgLSBBVDkxX0JBU0VfU1lTKQorI2RlZmluZSBBVDkxX1NNQwkoMHhmZmZmZTgwMCAtIEFUOTFfQkFTRV9TWVMpCisjZGVmaW5lIEFUOTFfTUFUUklYCSgweGZmZmZlYTAwIC0gQVQ5MV9CQVNFX1NZUykKKyNkZWZpbmUgQVQ5MV9ETUEJKDB4ZmZmZmVjMDAgLSBBVDkxX0JBU0VfU1lTKQorI2RlZmluZSBBVDkxX0RCR1UJKDB4ZmZmZmVlMDAgLSBBVDkxX0JBU0VfU1lTKQorI2RlZmluZSBBVDkxX0FJQwkoMHhmZmZmZjAwMCAtIEFUOTFfQkFTRV9TWVMpCisjZGVmaW5lIEFUOTFfUElPQQkoMHhmZmZmZjIwMCAtIEFUOTFfQkFTRV9TWVMpCisjZGVmaW5lIEFUOTFfUElPQgkoMHhmZmZmZjQwMCAtIEFUOTFfQkFTRV9TWVMpCisjZGVmaW5lIEFUOTFfUElPQwkoMHhmZmZmZjYwMCAtIEFUOTFfQkFTRV9TWVMpCisjZGVmaW5lIEFUOTFfUElPRAkoMHhmZmZmZjgwMCAtIEFUOTFfQkFTRV9TWVMpCisjZGVmaW5lIEFUOTFfUElPRQkoMHhmZmZmZmEwMCAtIEFUOTFfQkFTRV9TWVMpCisjZGVmaW5lIEFUOTFfUE1DCSgweGZmZmZmYzAwIC0gQVQ5MV9CQVNFX1NZUykKKyNkZWZpbmUgQVQ5MV9SU1RDCSgweGZmZmZmZDAwIC0gQVQ5MV9CQVNFX1NZUykKKyNkZWZpbmUgQVQ5MV9TSERXQwkoMHhmZmZmZmQxMCAtIEFUOTFfQkFTRV9TWVMpCisjZGVmaW5lIEFUOTFfUlRUCSgweGZmZmZmZDIwIC0gQVQ5MV9CQVNFX1NZUykKKyNkZWZpbmUgQVQ5MV9QSVQJKDB4ZmZmZmZkMzAgLSBBVDkxX0JBU0VfU1lTKQorI2RlZmluZSBBVDkxX1dEVAkoMHhmZmZmZmQ0MCAtIEFUOTFfQkFTRV9TWVMpCisjZGVmaW5lIEFUOTFfR1BCUgkoMHhmZmZmZmQ2MCAtIEFUOTFfQkFTRV9TWVMpCisjZGVmaW5lIEFUOTFfUlRDCSgweGZmZmZmZGIwIC0gQVQ5MV9CQVNFX1NZUykKKworI2RlZmluZSBBVDkxX1VTQVJUMAlBVDkxU0FNOUc0NV9CQVNFX1VTMAorI2RlZmluZSBBVDkxX1VTQVJUMQlBVDkxU0FNOUc0NV9CQVNFX1VTMQorI2RlZmluZSBBVDkxX1VTQVJUMglBVDkxU0FNOUc0NV9CQVNFX1VTMgorI2RlZmluZSBBVDkxX1VTQVJUMwlBVDkxU0FNOUc0NV9CQVNFX1VTMworCisvKgorICogSW50ZXJuYWwgTWVtb3J5LgorICovCisjZGVmaW5lIEFUOTFTQU05RzQ1X1NSQU1fQkFTRQkweDAwMzAwMDAwCS8qIEludGVybmFsIFNSQU0gYmFzZSBhZGRyZXNzICovCisjZGVmaW5lIEFUOTFTQU05RzQ1X1NSQU1fU0laRQlTWl82NEsJCS8qIEludGVybmFsIFNSQU0gc2l6ZSAoNjRLYikgKi8KKworI2RlZmluZSBBVDkxU0FNOUc0NV9ST01fQkFTRQkweDAwNDAwMDAwCS8qIEludGVybmFsIFJPTSBiYXNlIGFkZHJlc3MgKi8KKyNkZWZpbmUgQVQ5MVNBTTlHNDVfUk9NX1NJWkUJU1pfNjRLCQkvKiBJbnRlcm5hbCBST00gc2l6ZSAoNjRLYikgKi8KKworI2RlZmluZSBBVDkxU0FNOUc0NV9MQ0RDX0JBU0UJMHgwMDUwMDAwMAkvKiBMQ0QgQ29udHJvbGxlciAqLworI2RlZmluZSBBVDkxU0FNOUc0NV9VRFBIU19GSUZPCTB4MDA2MDAwMDAJLyogVVNCIERldmljZSBIUyBjb250cm9sbGVyICovCisjZGVmaW5lIEFUOTFTQU05RzQ1X0hDSV9CQVNFCTB4MDA3MDAwMDAJLyogVVNCIEhvc3QgY29udHJvbGxlciAoT0hDSSkgKi8KKyNkZWZpbmUgQVQ5MVNBTTlHNDVfRUhDSV9CQVNFCTB4MDA4MDAwMDAJLyogVVNCIEhvc3QgY29udHJvbGxlciAoRUhDSSkgKi8KKyNkZWZpbmUgQVQ5MVNBTTlHNDVfVkRFQ19CQVNFCTB4MDA5MDAwMDAJLyogVmlkZW8gRGVjb2RlciBDb250cm9sbGVyICovCisKKyNkZWZpbmUgQ09ORklHX0RSQU1fQkFTRQlBVDkxX0NISVBTRUxFQ1RfNgorCisvKgorICogQ3B1IE5hbWUKKyAqLworI2RlZmluZSBBVDkxX0NQVV9OQU1FCSJBVDkxU0FNOUc0NSIKKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxL2F0OTFzYW05ZzQ1X21hdHJpeC5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MS9hdDkxc2FtOWc0NV9tYXRyaXguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjIwZTFiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MS9hdDkxc2FtOWc0NV9tYXRyaXguaApAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAqIE1hdHJpeC1jZW50cmljIGhlYWRlciBmaWxlIGZvciB0aGUgQVQ5MVNBTTlNMXggZmFtaWx5CisgKgorICogIENvcHlyaWdodCAoQykgMjAwOCBBdG1lbCBDb3Jwb3JhdGlvbi4KKyAqCisgKiBNZW1vcnkgQ29udHJvbGxlcnMgKE1BVFJJWCwgRUJJKSAtIFN5c3RlbSBwZXJpcGhlcmFscyByZWdpc3RlcnMuCisgKiBCYXNlZCBvbiBBVDkxU0FNOUc0NSBwcmVsaW1pbmFyeSBkYXRhc2hlZXQuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqLworCisjaWZuZGVmIEFUOTFTQU05RzQ1X01BVFJJWF9ICisjZGVmaW5lIEFUOTFTQU05RzQ1X01BVFJJWF9ICisKKyNkZWZpbmUgQVQ5MV9NQVRSSVhfTUNGRzAJKEFUOTFfTUFUUklYICsgMHgwMCkJLyogTWFzdGVyIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMCAqLworI2RlZmluZSBBVDkxX01BVFJJWF9NQ0ZHMQkoQVQ5MV9NQVRSSVggKyAweDA0KQkvKiBNYXN0ZXIgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAxICovCisjZGVmaW5lIEFUOTFfTUFUUklYX01DRkcyCShBVDkxX01BVFJJWCArIDB4MDgpCS8qIE1hc3RlciBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgQVQ5MV9NQVRSSVhfTUNGRzMJKEFUOTFfTUFUUklYICsgMHgwQykJLyogTWFzdGVyIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMyAqLworI2RlZmluZSBBVDkxX01BVFJJWF9NQ0ZHNAkoQVQ5MV9NQVRSSVggKyAweDEwKQkvKiBNYXN0ZXIgQ29uZmlndXJhdGlvbiBSZWdpc3RlciA0ICovCisjZGVmaW5lIEFUOTFfTUFUUklYX01DRkc1CShBVDkxX01BVFJJWCArIDB4MTQpCS8qIE1hc3RlciBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDUgKi8KKyNkZWZpbmUgQVQ5MV9NQVRSSVhfTUNGRzYJKEFUOTFfTUFUUklYICsgMHgxOCkJLyogTWFzdGVyIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgNiAqLworI2RlZmluZSBBVDkxX01BVFJJWF9NQ0ZHNwkoQVQ5MV9NQVRSSVggKyAweDFDKQkvKiBNYXN0ZXIgQ29uZmlndXJhdGlvbiBSZWdpc3RlciA3ICovCisjZGVmaW5lIEFUOTFfTUFUUklYX01DRkc4CShBVDkxX01BVFJJWCArIDB4MjApCS8qIE1hc3RlciBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDggKi8KKyNkZWZpbmUgQVQ5MV9NQVRSSVhfTUNGRzkJKEFUOTFfTUFUUklYICsgMHgyNCkJLyogTWFzdGVyIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgOSAqLworI2RlZmluZSBBVDkxX01BVFJJWF9NQ0ZHMTAJKEFUOTFfTUFUUklYICsgMHgyOCkJLyogTWFzdGVyIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMTAgKi8KKyNkZWZpbmUgQVQ5MV9NQVRSSVhfTUNGRzExCShBVDkxX01BVFJJWCArIDB4MkMpCS8qIE1hc3RlciBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDExICovCisjZGVmaW5lCQlBVDkxX01BVFJJWF9VTEJUCSg3IDw8IDApCS8qIFVuZGVmaW5lZCBMZW5ndGggQnVyc3QgVHlwZSAqLworI2RlZmluZQkJCUFUOTFfTUFUUklYX1VMQlRfSU5GSU5JVEUJKDAgPDwgMCkKKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9VTEJUX1NJTkdMRQkJKDEgPDwgMCkKKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9VTEJUX0ZPVVIJCSgyIDw8IDApCisjZGVmaW5lCQkJQVQ5MV9NQVRSSVhfVUxCVF9FSUdIVAkJKDMgPDwgMCkKKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9VTEJUX1NJWFRFRU4JKDQgPDwgMCkKKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9VTEJUX1RISVJUWVRXTwkoNSA8PCAwKQorI2RlZmluZQkJCUFUOTFfTUFUUklYX1VMQlRfU0lYVFlGT1VSCSg2IDw8IDApCisjZGVmaW5lCQkJQVQ5MV9NQVRSSVhfVUxCVF8xMjgJCSg3IDw8IDApCisKKyNkZWZpbmUgQVQ5MV9NQVRSSVhfU0NGRzAJKEFUOTFfTUFUUklYICsgMHg0MCkJLyogU2xhdmUgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAwICovCisjZGVmaW5lIEFUOTFfTUFUUklYX1NDRkcxCShBVDkxX01BVFJJWCArIDB4NDQpCS8qIFNsYXZlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgMSAqLworI2RlZmluZSBBVDkxX01BVFJJWF9TQ0ZHMgkoQVQ5MV9NQVRSSVggKyAweDQ4KQkvKiBTbGF2ZSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgQVQ5MV9NQVRSSVhfU0NGRzMJKEFUOTFfTUFUUklYICsgMHg0QykJLyogU2xhdmUgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAzICovCisjZGVmaW5lIEFUOTFfTUFUUklYX1NDRkc0CShBVDkxX01BVFJJWCArIDB4NTApCS8qIFNsYXZlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgNCAqLworI2RlZmluZSBBVDkxX01BVFJJWF9TQ0ZHNQkoQVQ5MV9NQVRSSVggKyAweDU0KQkvKiBTbGF2ZSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyIDUgKi8KKyNkZWZpbmUgQVQ5MV9NQVRSSVhfU0NGRzYJKEFUOTFfTUFUUklYICsgMHg1OCkJLyogU2xhdmUgQ29uZmlndXJhdGlvbiBSZWdpc3RlciA2ICovCisjZGVmaW5lIEFUOTFfTUFUUklYX1NDRkc3CShBVDkxX01BVFJJWCArIDB4NUMpCS8qIFNsYXZlIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgNyAqLworI2RlZmluZQkJQVQ5MV9NQVRSSVhfU0xPVF9DWUNMRQkJKDB4MWZmIDw8IDApCS8qIE1heGltdW0gTnVtYmVyIG9mIEFsbG93ZWQgQ3ljbGVzIGZvciBhIEJ1cnN0ICovCisjZGVmaW5lCQlBVDkxX01BVFJJWF9ERUZNU1RSX1RZUEUJKDMgICAgPDwgMTYpCS8qIERlZmF1bHQgTWFzdGVyIFR5cGUgKi8KKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9ERUZNU1RSX1RZUEVfTk9ORQkoMCA8PCAxNikKKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9ERUZNU1RSX1RZUEVfTEFTVAkoMSA8PCAxNikKKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9ERUZNU1RSX1RZUEVfRklYRUQJKDIgPDwgMTYpCisjZGVmaW5lCQlBVDkxX01BVFJJWF9GSVhFRF9ERUZNU1RSCSgweGYgIDw8IDE4KQkvKiBGaXhlZCBJbmRleCBvZiBEZWZhdWx0IE1hc3RlciAqLworCisjZGVmaW5lIEFUOTFfTUFUUklYX1BSQVMwCShBVDkxX01BVFJJWCArIDB4ODApCS8qIFByaW9yaXR5IFJlZ2lzdGVyIEEgZm9yIFNsYXZlIDAgKi8KKyNkZWZpbmUgQVQ5MV9NQVRSSVhfUFJCUzAJKEFUOTFfTUFUUklYICsgMHg4NCkJLyogUHJpb3JpdHkgUmVnaXN0ZXIgQiBmb3IgU2xhdmUgMCAqLworI2RlZmluZSBBVDkxX01BVFJJWF9QUkFTMQkoQVQ5MV9NQVRSSVggKyAweDg4KQkvKiBQcmlvcml0eSBSZWdpc3RlciBBIGZvciBTbGF2ZSAxICovCisjZGVmaW5lIEFUOTFfTUFUUklYX1BSQlMxCShBVDkxX01BVFJJWCArIDB4OEMpCS8qIFByaW9yaXR5IFJlZ2lzdGVyIEIgZm9yIFNsYXZlIDEgKi8KKyNkZWZpbmUgQVQ5MV9NQVRSSVhfUFJBUzIJKEFUOTFfTUFUUklYICsgMHg5MCkJLyogUHJpb3JpdHkgUmVnaXN0ZXIgQSBmb3IgU2xhdmUgMiAqLworI2RlZmluZSBBVDkxX01BVFJJWF9QUkJTMgkoQVQ5MV9NQVRSSVggKyAweDk0KQkvKiBQcmlvcml0eSBSZWdpc3RlciBCIGZvciBTbGF2ZSAyICovCisjZGVmaW5lIEFUOTFfTUFUUklYX1BSQVMzCShBVDkxX01BVFJJWCArIDB4OTgpCS8qIFByaW9yaXR5IFJlZ2lzdGVyIEEgZm9yIFNsYXZlIDMgKi8KKyNkZWZpbmUgQVQ5MV9NQVRSSVhfUFJCUzMJKEFUOTFfTUFUUklYICsgMHg5QykJLyogUHJpb3JpdHkgUmVnaXN0ZXIgQiBmb3IgU2xhdmUgMyAqLworI2RlZmluZSBBVDkxX01BVFJJWF9QUkFTNAkoQVQ5MV9NQVRSSVggKyAweEEwKQkvKiBQcmlvcml0eSBSZWdpc3RlciBBIGZvciBTbGF2ZSA0ICovCisjZGVmaW5lIEFUOTFfTUFUUklYX1BSQlM0CShBVDkxX01BVFJJWCArIDB4QTQpCS8qIFByaW9yaXR5IFJlZ2lzdGVyIEIgZm9yIFNsYXZlIDQgKi8KKyNkZWZpbmUgQVQ5MV9NQVRSSVhfUFJBUzUJKEFUOTFfTUFUUklYICsgMHhBOCkJLyogUHJpb3JpdHkgUmVnaXN0ZXIgQSBmb3IgU2xhdmUgNSAqLworI2RlZmluZSBBVDkxX01BVFJJWF9QUkJTNQkoQVQ5MV9NQVRSSVggKyAweEFDKQkvKiBQcmlvcml0eSBSZWdpc3RlciBCIGZvciBTbGF2ZSA1ICovCisjZGVmaW5lIEFUOTFfTUFUUklYX1BSQVM2CShBVDkxX01BVFJJWCArIDB4QjApCS8qIFByaW9yaXR5IFJlZ2lzdGVyIEEgZm9yIFNsYXZlIDYgKi8KKyNkZWZpbmUgQVQ5MV9NQVRSSVhfUFJCUzYJKEFUOTFfTUFUUklYICsgMHhCNCkJLyogUHJpb3JpdHkgUmVnaXN0ZXIgQiBmb3IgU2xhdmUgNiAqLworI2RlZmluZSBBVDkxX01BVFJJWF9QUkFTNwkoQVQ5MV9NQVRSSVggKyAweEI4KQkvKiBQcmlvcml0eSBSZWdpc3RlciBBIGZvciBTbGF2ZSA3ICovCisjZGVmaW5lIEFUOTFfTUFUUklYX1BSQlM3CShBVDkxX01BVFJJWCArIDB4QkMpCS8qIFByaW9yaXR5IFJlZ2lzdGVyIEIgZm9yIFNsYXZlIDcgKi8KKyNkZWZpbmUJCUFUOTFfTUFUUklYX00wUFIJCSgzIDw8IDApCS8qIE1hc3RlciAwIFByaW9yaXR5ICovCisjZGVmaW5lCQlBVDkxX01BVFJJWF9NMVBSCQkoMyA8PCA0KQkvKiBNYXN0ZXIgMSBQcmlvcml0eSAqLworI2RlZmluZQkJQVQ5MV9NQVRSSVhfTTJQUgkJKDMgPDwgOCkJLyogTWFzdGVyIDIgUHJpb3JpdHkgKi8KKyNkZWZpbmUJCUFUOTFfTUFUUklYX00zUFIJCSgzIDw8IDEyKQkvKiBNYXN0ZXIgMyBQcmlvcml0eSAqLworI2RlZmluZQkJQVQ5MV9NQVRSSVhfTTRQUgkJKDMgPDwgMTYpCS8qIE1hc3RlciA0IFByaW9yaXR5ICovCisjZGVmaW5lCQlBVDkxX01BVFJJWF9NNVBSCQkoMyA8PCAyMCkJLyogTWFzdGVyIDUgUHJpb3JpdHkgKi8KKyNkZWZpbmUJCUFUOTFfTUFUUklYX002UFIJCSgzIDw8IDI0KQkvKiBNYXN0ZXIgNiBQcmlvcml0eSAqLworI2RlZmluZQkJQVQ5MV9NQVRSSVhfTTdQUgkJKDMgPDwgMjgpCS8qIE1hc3RlciA3IFByaW9yaXR5ICovCisjZGVmaW5lCQlBVDkxX01BVFJJWF9NOFBSCQkoMyA8PCAwKQkvKiBNYXN0ZXIgOCBQcmlvcml0eSAoaW4gUmVnaXN0ZXIgQikgKi8KKyNkZWZpbmUJCUFUOTFfTUFUUklYX005UFIJCSgzIDw8IDQpCS8qIE1hc3RlciA5IFByaW9yaXR5IChpbiBSZWdpc3RlciBCKSAqLworI2RlZmluZQkJQVQ5MV9NQVRSSVhfTTEwUFIJCSgzIDw8IDgpCS8qIE1hc3RlciAxMCBQcmlvcml0eSAoaW4gUmVnaXN0ZXIgQikgKi8KKyNkZWZpbmUJCUFUOTFfTUFUUklYX00xMVBSCQkoMyA8PCAxMikJLyogTWFzdGVyIDExIFByaW9yaXR5IChpbiBSZWdpc3RlciBCKSAqLworCisjZGVmaW5lIEFUOTFfTUFUUklYX01SQ1IJKEFUOTFfTUFUUklYICsgMHgxMDApCS8qIE1hc3RlciBSZW1hcCBDb250cm9sIFJlZ2lzdGVyICovCisjZGVmaW5lCQlBVDkxX01BVFJJWF9SQ0IwCQkoMSA8PCAwKQkvKiBSZW1hcCBDb21tYW5kIGZvciBBSEIgTWFzdGVyIDAgKEFSTTkyNkVKLVMgSW5zdHJ1Y3Rpb24gTWFzdGVyKSAqLworI2RlZmluZQkJQVQ5MV9NQVRSSVhfUkNCMQkJKDEgPDwgMSkJLyogUmVtYXAgQ29tbWFuZCBmb3IgQUhCIE1hc3RlciAxIChBUk05MjZFSi1TIERhdGEgTWFzdGVyKSAqLworI2RlZmluZQkJQVQ5MV9NQVRSSVhfUkNCMgkJKDEgPDwgMikKKyNkZWZpbmUJCUFUOTFfTUFUUklYX1JDQjMJCSgxIDw8IDMpCisjZGVmaW5lCQlBVDkxX01BVFJJWF9SQ0I0CQkoMSA8PCA0KQorI2RlZmluZQkJQVQ5MV9NQVRSSVhfUkNCNQkJKDEgPDwgNSkKKyNkZWZpbmUJCUFUOTFfTUFUUklYX1JDQjYJCSgxIDw8IDYpCisjZGVmaW5lCQlBVDkxX01BVFJJWF9SQ0I3CQkoMSA8PCA3KQorI2RlZmluZQkJQVQ5MV9NQVRSSVhfUkNCOAkJKDEgPDwgOCkKKyNkZWZpbmUJCUFUOTFfTUFUUklYX1JDQjkJCSgxIDw8IDkpCisjZGVmaW5lCQlBVDkxX01BVFJJWF9SQ0IxMAkJKDEgPDwgMTApCisjZGVmaW5lCQlBVDkxX01BVFJJWF9SQ0IxMQkJKDEgPDwgMTEpCisKKyNkZWZpbmUgQVQ5MV9NQVRSSVhfVENNUgkoQVQ5MV9NQVRSSVggKyAweDExMCkJLyogVENNIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgKi8KKyNkZWZpbmUJCUFUOTFfTUFUUklYX0lUQ01fU0laRQkJKDB4ZiA8PCAwKQkvKiBTaXplIG9mIElUQ00gZW5hYmxlZCBtZW1vcnkgYmxvY2sgKi8KKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9JVENNXzAJCSgwIDw8IDApCisjZGVmaW5lCQkJQVQ5MV9NQVRSSVhfSVRDTV8zMgkJKDYgPDwgMCkKKyNkZWZpbmUJCUFUOTFfTUFUUklYX0RUQ01fU0laRQkJKDB4ZiA8PCA0KQkvKiBTaXplIG9mIERUQ00gZW5hYmxlZCBtZW1vcnkgYmxvY2sgKi8KKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9EVENNXzAJCSgwIDw8IDQpCisjZGVmaW5lCQkJQVQ5MV9NQVRSSVhfRFRDTV8zMgkJKDYgPDwgNCkKKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9EVENNXzY0CQkoNyA8PCA0KQorI2RlZmluZQkJQVQ5MV9NQVRSSVhfVENNX05XUwkJKDB4MSA8PCAxMSkJLyogV2FpdCBzdGF0ZSBUQ00gcmVnaXN0ZXIgKi8KKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9UQ01fTk9fV1MJCSgweDAgPDwgMTEpCisjZGVmaW5lCQkJQVQ5MV9NQVRSSVhfVENNX09ORV9XUwkJKDB4MSA8PCAxMSkKKworI2RlZmluZSBBVDkxX01BVFJJWF9WSURFTwkoQVQ5MV9NQVRSSVggKyAweDExOCkJLyogVmlkZW8gTW9kZSBDb25maWd1cmF0aW9uIFJlZ2lzdGVyICovCisjZGVmaW5lCQlBVDkxQ19WREVDX1NFTAkJCSgweDEgPDwgIDApIC8qIFZpZGVvIE1vZGUgU2VsZWN0aW9uICovCisjZGVmaW5lCQkJQVQ5MUNfVkRFQ19TRUxfT0ZGCQkoMCA8PCAwKQorI2RlZmluZQkJCUFUOTFDX1ZERUNfU0VMX09OCQkoMSA8PCAwKQorCisjZGVmaW5lIEFUOTFfTUFUUklYX0VCSUNTQQkoQVQ5MV9NQVRSSVggKyAweDEyOCkJLyogRUJJIENoaXAgU2VsZWN0IEFzc2lnbm1lbnQgUmVnaXN0ZXIgKi8KKyNkZWZpbmUJCUFUOTFfTUFUUklYX0VCSV9DUzFBCQkoMSA8PCAxKQkvKiBDaGlwIFNlbGVjdCAxIEFzc2lnbm1lbnQgKi8KKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9FQklfQ1MxQV9TTUMJCSgwIDw8IDEpCisjZGVmaW5lCQkJQVQ5MV9NQVRSSVhfRUJJX0NTMUFfU0RSQU1DCQkoMSA8PCAxKQorI2RlZmluZQkJQVQ5MV9NQVRSSVhfRUJJX0NTM0EJCSgxIDw8IDMpCS8qIENoaXAgU2VsZWN0IDMgQXNzaWdubWVudCAqLworI2RlZmluZQkJCUFUOTFfTUFUUklYX0VCSV9DUzNBX1NNQwkJKDAgPDwgMykKKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9FQklfQ1MzQV9TTUNfU01BUlRNRURJQQkoMSA8PCAzKQorI2RlZmluZQkJQVQ5MV9NQVRSSVhfRUJJX0NTNEEJCSgxIDw8IDQpCS8qIENoaXAgU2VsZWN0IDQgQXNzaWdubWVudCAqLworI2RlZmluZQkJCUFUOTFfTUFUUklYX0VCSV9DUzRBX1NNQwkJKDAgPDwgNCkKKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9FQklfQ1M0QV9TTUNfQ0YwCQkoMSA8PCA0KQorI2RlZmluZQkJQVQ5MV9NQVRSSVhfRUJJX0NTNUEJCSgxIDw8IDUpCS8qIENoaXAgU2VsZWN0IDUgQXNzaWdubWVudCAqLworI2RlZmluZQkJCUFUOTFfTUFUUklYX0VCSV9DUzVBX1NNQwkJKDAgPDwgNSkKKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9FQklfQ1M1QV9TTUNfQ0YxCQkoMSA8PCA1KQorI2RlZmluZQkJQVQ5MV9NQVRSSVhfRUJJX0RCUFVDCQkoMSA8PCA4KQkvKiBEYXRhIEJ1cyBQdWxsLXVwIENvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9FQklfREJQVV9PTgkJCSgwIDw8IDgpCisjZGVmaW5lCQkJQVQ5MV9NQVRSSVhfRUJJX0RCUFVfT0ZGCQkoMSA8PCA4KQorI2RlZmluZQkJQVQ5MV9NQVRSSVhfRUJJX1ZERElPTVNFTAkoMSA8PCAxNikJLyogTWVtb3J5IHZvbHRhZ2Ugc2VsZWN0aW9uICovCisjZGVmaW5lCQkJQVQ5MV9NQVRSSVhfRUJJX1ZERElPTVNFTF8xXzhWCQkoMCA8PCAxNikKKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9FQklfVkRESU9NU0VMXzNfM1YJCSgxIDw8IDE2KQorI2RlZmluZQkJQVQ5MV9NQVRSSVhfRUJJX0VCSV9JT1NSCSgxIDw8IDE3KQkvKiBFQkkgSS9PIHNsZXcgcmF0ZSBzZWxlY3Rpb24gKi8KKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9FQklfRUJJX0lPU1JfUkVEVUNFRAkoMCA8PCAxNykKKyNkZWZpbmUJCQlBVDkxX01BVFJJWF9FQklfRUJJX0lPU1JfTk9STUFMCQkoMSA8PCAxNykKKyNkZWZpbmUJCUFUOTFfTUFUUklYX0VCSV9ERFJfSU9TUgkoMSA8PCAxOCkJLyogRERSMiBkZWRpY2F0ZWQgcG9ydCBJL08gc2xldyByYXRlIHNlbGVjdGlvbiAqLworI2RlZmluZQkJCUFUOTFfTUFUUklYX0VCSV9ERFJfSU9TUl9SRURVQ0VECSgwIDw8IDE4KQorI2RlZmluZQkJCUFUOTFfTUFUUklYX0VCSV9ERFJfSU9TUl9OT1JNQUwJCSgxIDw8IDE4KQorCisjZGVmaW5lIEFUOTFfTUFUUklYX1dQTVIJKEFUOTFfTUFUUklYICsgMHgxRTQpCS8qIFdyaXRlIFByb3RlY3QgTW9kZSBSZWdpc3RlciAqLworI2RlZmluZQkJQVQ5MV9NQVRSSVhfV1BNUl9XUEVOCQkoMSA8PCAwKQkvKiBXcml0ZSBQcm90ZWN0IEVOYWJsZSAqLworI2RlZmluZQkJCUFUOTFfTUFUUklYX1dQTVJfV1BfV1BESVMJCSgwIDw8IDApCisjZGVmaW5lCQkJQVQ5MV9NQVRSSVhfV1BNUl9XUF9XUEVOCQkoMSA8PCAwKQorI2RlZmluZQkJQVQ5MV9NQVRSSVhfV1BNUl9XUEtFWQkJKDB4RkZGRkZGIDw8IDgpCS8qIFdyaXRlIFByb3RlY3QgS0VZICovCisKKyNkZWZpbmUgQVQ5MV9NQVRSSVhfV1BTUgkoQVQ5MV9NQVRSSVggKyAweDFFOCkJLyogV3JpdGUgUHJvdGVjdCBTdGF0dXMgUmVnaXN0ZXIgKi8KKyNkZWZpbmUJCUFUOTFfTUFUUklYX1dQU1JfV1BWUwkJKDEgPDwgMCkJLyogV3JpdGUgUHJvdGVjdCBWaW9sYXRpb24gU3RhdHVzICovCisjZGVmaW5lCQkJQVQ5MV9NQVRSSVhfV1BTUl9OT19XUFYJCSgwIDw8IDApCisjZGVmaW5lCQkJQVQ5MV9NQVRSSVhfV1BTUl9XUFYJCSgxIDw8IDApCisjZGVmaW5lCQlBVDkxX01BVFJJWF9XUFNSX1dQVlNSQwkJKDB4RkZGRiA8PCA4KQkvKiBXcml0ZSBQcm90ZWN0IFZpb2xhdGlvbiBTb3VyY2UgKi8KKworI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxL2Nsay5oIGIvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MS9jbGsuaAppbmRleCA2YWFmODJlLi5mNjQyZGQ5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxL2Nsay5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTEvY2xrLmgKQEAgLTQ5LDYgKzQ5LDExIEBACiAJcmV0dXJuIGdldF9tY2tfY2xrX3JhdGUoKTsKIH0KIAorc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGdldF9zcGlfY2xrX3JhdGUodW5zaWduZWQgaW50IGRldl9pZCkKK3sKKwlyZXR1cm4gZ2V0X21ja19jbGtfcmF0ZSgpOworfQorCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcgZ2V0X3R3aV9jbGtfcmF0ZSh1bnNpZ25lZCBpbnQgZGV2X2lkKQogewogCXJldHVybiBnZXRfbWNrX2Nsa19yYXRlKCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxL2hhcmR3YXJlLmggYi9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxL2hhcmR3YXJlLmgKaW5kZXggODcwNDEwNi4uYzQyNzA5ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MS9oYXJkd2FyZS5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTEvaGFyZHdhcmUuaApAQCAtMzcsNiArMzcsMTIgQEAKICNpbmNsdWRlIDxhc20vYXJjaC9hdDkxc2FtOXJsLmg+CiAjZGVmaW5lIEFUOTFfQkFTRV9TUEkJQVQ5MVNBTTlSTF9CQVNFX1NQSQogI2RlZmluZSBBVDkxX0lEX1VIUAlBVDkxU0FNOVJMX0lEX1VIUAorI2VsaWYgZGVmaW5lZChDT05GSUdfQVQ5MVNBTTlHNDUpIHx8IGRlZmluZWQoQ09ORklHX0FUOTFTQU05TTEwRzQ1KQorI2luY2x1ZGUgPGFzbS9hcmNoL2F0OTFzYW05ZzQ1Lmg+CisjZGVmaW5lIEFUOTFfQkFTRV9FTUFDICBBVDkxU0FNOUc0NV9CQVNFX0VNQUMKKyNkZWZpbmUgQVQ5MV9CQVNFX1NQSSAgIEFUOTFTQU05RzQ1X0JBU0VfU1BJMAorI2RlZmluZSBBVDkxX0lEX1VIUCAgICAgQVQ5MVNBTTlHNDVfSURfVUhQSFMKKyNkZWZpbmUgQVQ5MV9QTUNfVUhQICAgIEFUOTFTQU05MjZ4X1BNQ19VSFAKICNlbGlmIGRlZmluZWQoQ09ORklHX0FUOTFDQVA5KQogI2luY2x1ZGUgPGFzbS9hcmNoL2F0OTFjYXA5Lmg+CiAjZGVmaW5lIEFUOTFfQkFTRV9TUEkJQVQ5MUNBUDlfQkFTRV9TUEkwCmRpZmYgLS1naXQgYS9pbmNsdWRlL2FzbS1hcm0vYXJjaC1hdDkxL21lbW9yeS1tYXAuaCBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTEvbWVtb3J5LW1hcC5oCmluZGV4IDgwMTVkYWQuLmY2MDVmMzcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTEvbWVtb3J5LW1hcC5oCisrKyBiL2luY2x1ZGUvYXNtLWFybS9hcmNoLWF0OTEvbWVtb3J5LW1hcC5oCkBAIC0zMCw1ICszMCw2IEBACiAjZGVmaW5lIFVTQVJUMV9CQVNFIEFUOTFfVVNBUlQxCiAjZGVmaW5lIFVTQVJUMl9CQVNFIEFUOTFfVVNBUlQyCiAjZGVmaW5lIFVTQVJUM19CQVNFIChBVDkxX0JBU0VfU1lTICsgQVQ5MV9EQkdVKQorI2RlZmluZSBTUEkwX0JBU0UJQVQ5MV9CQVNFX1NQSQogCiAjZW5kaWYgLyogX19BU01fQVJNX0FSQ0hfTUVNT1JZTUFQX0hfXyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2F0OTFzYW05bTEwZzQ1ZWsuaCBiL2luY2x1ZGUvY29uZmlncy9hdDkxc2FtOW0xMGc0NWVrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcyYzQ1YgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvY29uZmlncy9hdDkxc2FtOW0xMGc0NWVrLmgKQEAgLTAsMCArMSwyMjUgQEAKKy8qCisgKiAoQykgQ29weXJpZ2h0IDIwMDctMjAwOAorICogU3RlbGlhbiBQb3AgPHN0ZWxpYW4ucG9wQGxlYWR0ZWNoZGVzaWduLmNvbT4KKyAqIExlYWQgVGVjaCBEZXNpZ24gPHd3dy5sZWFkdGVjaGRlc2lnbi5jb20+CisgKgorICogQ29uZmlndWF0aW9uIHNldHRpbmdzIGZvciB0aGUgQVQ5MVNBTTlNMTBHNDVFSyBib2FyZChhbmQgQVQ5MVNBTTlHNDVFS0VTKS4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX19DT05GSUdfSAorI2RlZmluZSBfX0NPTkZJR19ICisKKy8qIEFSTSBhc3luY2hyb25vdXMgY2xvY2sgKi8KKyNkZWZpbmUgQVQ5MV9NQUlOX0NMT0NLCQkxMjAwMDAwMAkvKiBmcm9tIDEyIE1IeiBjcnlzdGFsICovCisjZGVmaW5lIENPTkZJR19TWVNfSFoJCTEwMDAKKworI2RlZmluZSBDT05GSUdfQVJNOTI2RUpTCTEJLyogVGhpcyBpcyBhbiBBUk05MjZFSlMgQ29yZQkqLworI2lmZGVmIENPTkZJR19BVDkxU0FNOU0xMEc0NUVLCisjZGVmaW5lIENPTkZJR19BVDkxU0FNOU0xMEc0NQkxCS8qIEl0J3MgYW4gQXRtZWwgQVQ5MVNBTTlNMTBHNDUgU29DKi8KKyNlbHNlCisjZGVmaW5lIENPTkZJR19BVDkxU0FNOUc0NQkxCS8qIEl0J3MgYW4gQXRtZWwgQVQ5MVNBTTlHNDUgU29DKi8KKyNlbmRpZgorI2RlZmluZSBDT05GSUdfQVJDSF9DUFVfSU5JVAorI3VuZGVmIENPTkZJR19VU0VfSVJRCQkJLyogd2UgZG9uJ3QgbmVlZCBJUlEvRklRIHN0dWZmCSovCisKKyNkZWZpbmUgQ09ORklHX0NNRExJTkVfVEFHCTEJLyogZW5hYmxlIHBhc3Npbmcgb2YgQVRBR3MJKi8KKyNkZWZpbmUgQ09ORklHX1NFVFVQX01FTU9SWV9UQUdTIDEKKyNkZWZpbmUgQ09ORklHX0lOSVRSRF9UQUcJMQorCisjZGVmaW5lIENPTkZJR19TS0lQX0xPV0xFVkVMX0lOSVQKKyNkZWZpbmUgQ09ORklHX1NLSVBfUkVMT0NBVEVfVUJPT1QKKworLyoKKyAqIEhhcmR3YXJlIGRyaXZlcnMKKyAqLworI2RlZmluZSBDT05GSUdfQVRNRUxfVVNBUlQJMQorI3VuZGVmIENPTkZJR19VU0FSVDAKKyN1bmRlZiBDT05GSUdfVVNBUlQxCisjdW5kZWYgQ09ORklHX1VTQVJUMgorI2RlZmluZSBDT05GSUdfVVNBUlQzCQkxCS8qIFVTQVJUIDMgaXMgREJHVSAqLworCisvKiBMQ0QgKi8KKyNkZWZpbmUgQ09ORklHX0xDRAkJCTEKKyNkZWZpbmUgTENEX0JQUAkJCQlMQ0RfQ09MT1I4CisjZGVmaW5lIENPTkZJR19MQ0RfTE9HTwkJCTEKKyN1bmRlZiBMQ0RfVEVTVF9QQVRURVJOCisjZGVmaW5lIENPTkZJR19MQ0RfSU5GTwkJCTEKKyNkZWZpbmUgQ09ORklHX0xDRF9JTkZPX0JFTE9XX0xPR08JMQorI2RlZmluZSBDT05GSUdfU1lTX1dISVRFX09OX0JMQUNLCQkxCisjZGVmaW5lIENPTkZJR19BVE1FTF9MQ0QJCTEKKyNkZWZpbmUgQ09ORklHX0FUTUVMX0xDRF9SR0I1NjUJCTEKKyNkZWZpbmUgQ09ORklHX1NZU19DT05TT0xFX0lTX0lOX0VOVgkJMQorLyogYm9hcmQgc3BlY2lmaWMobm90IGVub3VnaCBTUkFNKSAqLworI2RlZmluZSBDT05GSUdfQVQ5MVNBTTlHNDVfTENEX0JBU0UJCTB4NzNFMDAwMDAKKworLyogTEVEICovCisjZGVmaW5lIENPTkZJR19BVDkxX0xFRAorI2RlZmluZQlDT05GSUdfUkVEX0xFRAkJQVQ5MV9QSU5fUEQzMQkvKiB0aGlzIGlzIHRoZSB1c2VyMSBsZWQgKi8KKyNkZWZpbmUJQ09ORklHX0dSRUVOX0xFRAlBVDkxX1BJTl9QRDAJLyogdGhpcyBpcyB0aGUgdXNlcjIgbGVkICovCisKKyNkZWZpbmUgQ09ORklHX0JPT1RERUxBWQkzCisKKy8qCisgKiBCT09UUCBvcHRpb25zCisgKi8KKyNkZWZpbmUgQ09ORklHX0JPT1RQX0JPT1RGSUxFU0laRQkxCisjZGVmaW5lIENPTkZJR19CT09UUF9CT09UUEFUSAkJMQorI2RlZmluZSBDT05GSUdfQk9PVFBfR0FURVdBWQkJMQorI2RlZmluZSBDT05GSUdfQk9PVFBfSE9TVE5BTUUJCTEKKworLyoKKyAqIENvbW1hbmQgbGluZSBjb25maWd1cmF0aW9uLgorICovCisjaW5jbHVkZSA8Y29uZmlnX2NtZF9kZWZhdWx0Lmg+CisjdW5kZWYgQ09ORklHX0NNRF9CREkKKyN1bmRlZiBDT05GSUdfQ01EX0ZQR0EKKyN1bmRlZiBDT05GSUdfQ01EX0lNSQorI3VuZGVmIENPTkZJR19DTURfSU1MUworI3VuZGVmIENPTkZJR19DTURfQVVUT1NDUklQVAorI3VuZGVmIENPTkZJR19DTURfTE9BRFMKKworI2RlZmluZSBDT05GSUdfQ01EX1BJTkcJCTEKKyNkZWZpbmUgQ09ORklHX0NNRF9ESENQCQkxCisjZGVmaW5lIENPTkZJR19DTURfTkFORAkJMQorI2RlZmluZSBDT05GSUdfQ01EX1VTQgkJMQorCisvKiBTRFJBTSAqLworI2RlZmluZSBDT05GSUdfTlJfRFJBTV9CQU5LUwkJMQorI2RlZmluZSBQSFlTX1NEUkFNCQkJMHg3MDAwMDAwMAorI2RlZmluZSBQSFlTX1NEUkFNX1NJWkUJCQkweDA4MDAwMDAwCS8qIDEyOCBtZWdzICovCisKKy8qIERhdGFGbGFzaCAqLworI2lmZGVmIENPTkZJR19BVE1FTF9TUEkKKyNkZWZpbmUgQ09ORklHX0NNRF9TRgorI2RlZmluZSBDT05GSUdfQ01EX1NQSQorI2RlZmluZSBDT05GSUdfU1BJX0ZMQVNICQkxCisjZGVmaW5lIENPTkZJR19TUElfRkxBU0hfQVRNRUwJCTEKKyNkZWZpbmUgQ09ORklHX1NZU19NQVhfREFUQUZMQVNIX0JBTktTCTEKKyNlbmRpZgorCisvKiBOT1IgZmxhc2gsIGlmIHBvcHVsYXRlZCAqLworI2lmbmRlZiBDT05GSUdfQ01EX05BTkQKKyNkZWZpbmUgQ09ORklHX1NZU19OT19GTEFTSAkJMQorI2Vsc2UKKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9DRkkJCTEKKyNkZWZpbmUgQ09ORklHX0ZMQVNIX0NGSV9EUklWRVIJCTEKKyNkZWZpbmUgUEhZU19GTEFTSF8xCQkJMHgxMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBU0UJCQlQSFlTX0ZMQVNIXzEKKyNkZWZpbmUgQ09ORklHX1NZU19NQVhfRkxBU0hfU0VDVAkJMjU2CisjZGVmaW5lIENPTkZJR19TWVNfTUFYX0ZMQVNIX0JBTktTCQkxCisjZW5kaWYKKworLyogTkFORCBmbGFzaCAqLworI2lmZGVmIENPTkZJR19DTURfTkFORAorI2RlZmluZSBDT05GSUdfTkFORF9NQVhfQ0hJUFMJCQkxCisjZGVmaW5lIENPTkZJR19OQU5EX0FUTUVMCisjZGVmaW5lIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCQkxCisjZGVmaW5lIENPTkZJR19TWVNfTkFORF9CQVNFCQkJMHg0MDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX05BTkRfREJXXzgJCQkxCisvKiBvdXIgQUxFIGlzIEFEMjEgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19OQU5EX01BU0tfQUxFCQkoMSA8PCAyMSkKKy8qIG91ciBDTEUgaXMgQUQyMiAqLworI2RlZmluZSBDT05GSUdfU1lTX05BTkRfTUFTS19DTEUJCSgxIDw8IDIyKQorI2RlZmluZSBDT05GSUdfU1lTX05BTkRfRU5BQkxFX1BJTgkJQVQ5MV9QSU5fUEMxNAorI2RlZmluZSBDT05GSUdfU1lTX05BTkRfUkVBRFlfUElOCQlBVDkxX1BJTl9QQzgKKyNlbmRpZgorCisvKiBFdGhlcm5ldCAqLworI2RlZmluZSBDT05GSUdfTUFDQgkJCTEKKyNkZWZpbmUgQ09ORklHX1JNSUkJCQkxCisjZGVmaW5lIENPTkZJR19ORVRfTVVMVEkJCTEKKyNkZWZpbmUgQ09ORklHX05FVF9SRVRSWV9DT1VOVAkJMjAKKyNkZWZpbmUgQ09ORklHX1JFU0VUX1BIWV9SCQkxCisKKy8qIFVTQiAqLworI2RlZmluZSBDT05GSUdfVVNCX0FUTUVMCisjZGVmaW5lIENPTkZJR19VU0JfT0hDSV9ORVcJCTEKKyNkZWZpbmUgQ09ORklHX0RPU19QQVJUSVRJT04JCTEKKyNkZWZpbmUgQ09ORklHX1NZU19VU0JfT0hDSV9DUFVfSU5JVAkJMQorI2RlZmluZSBDT05GSUdfU1lTX1VTQl9PSENJX1JFR1NfQkFTRQkJMHgwMDcwMDAwMAkvKiBBVDkxU0FNOUc0NV9VSFBfT0hDSV9CQVNFICovCisjZGVmaW5lIENPTkZJR19TWVNfVVNCX09IQ0lfU0xPVF9OQU1FCQkiYXQ5MXNhbTlnNDUiCisjZGVmaW5lIENPTkZJR19TWVNfVVNCX09IQ0lfTUFYX1JPT1RfUE9SVFMJMgorI2RlZmluZSBDT05GSUdfVVNCX1NUT1JBR0UJCTEKKworI2RlZmluZSBDT05GSUdfU1lTX0xPQURfQUREUgkJCTB4MjIwMDAwMDAJLyogbG9hZCBhZGRyZXNzICovCisKKyNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX1NUQVJUCQlQSFlTX1NEUkFNCisjZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9FTkQJCQkweDIzZTAwMDAwCisKKyNpZmRlZiBDT05GSUdfU1lTX1VTRV9EQVRBRkxBU0gKKworLyogYm9vdHN0cmFwICsgdS1ib290ICsgZW52ICsgbGludXggaW4gZGF0YWZsYXNoIG9uIENTMCAqLworI2RlZmluZSBDT05GSUdfRU5WX0lTX0lOX1NQSV9GTEFTSAkxCisjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9CQVNFCSgweEMwMDAwMDAwICsgMHg4NDAwKQorI2RlZmluZSBDT05GSUdfRU5WX09GRlNFVAkJMHg0MjAwCisjZGVmaW5lIENPTkZJR19FTlZfQUREUgkJKDB4QzAwMDAwMDAgKyBDT05GSUdfRU5WX09GRlNFVCkKKyNkZWZpbmUgQ09ORklHX0VOVl9TSVpFCQkweDQyMDAKKyNkZWZpbmUgQ09ORklHX0VOVl9TRUNUX1NJWkUJCTB4MTAwMDAKKyNkZWZpbmUgQ09ORklHX0JPT1RDT01NQU5ECSJjcC5iIDB4QzAwNDIwMDAgMHgyMjAwMDAwMCAweDIxMDAwMDsgYm9vdG0iCisjZGVmaW5lIENPTkZJR19CT09UQVJHUwkJImNvbnNvbGU9dHR5UzAsMTE1MjAwICIgXAorCQkJCSJyb290PS9kZXYvbXRkYmxvY2swICIgXAorCQkJCSJtdGRwYXJ0cz1hdDkxX25hbmQ6LShyb290KSAiXAorCQkJCSJydyByb290ZnN0eXBlPWpmZnMyIgorCisjZWxzZSAvKiBDT05GSUdfU1lTX1VTRV9OQU5ERkxBU0ggKi8KKworLyogYm9vdHN0cmFwICsgdS1ib290ICsgZW52ICsgbGludXggaW4gbmFuZGZsYXNoICovCisjZGVmaW5lIENPTkZJR19FTlZfSVNfSU5fTkFORAkxCisjZGVmaW5lIENPTkZJR19FTlZfT0ZGU0VUCQkweDYwMDAwCisjZGVmaW5lIENPTkZJR19FTlZfT0ZGU0VUX1JFRFVORAkweDgwMDAwCisjZGVmaW5lIENPTkZJR19FTlZfU0laRQkJMHgyMDAwMAkJLyogMSBzZWN0b3IgPSAxMjgga0IgKi8KKyNkZWZpbmUgQ09ORklHX0JPT1RDT01NQU5ECSJuYW5kIHJlYWQgMHg3MjAwMDAwMCAweDIwMDAwMCAweDIwMDAwMDsgYm9vdG0iCisjZGVmaW5lIENPTkZJR19CT09UQVJHUwkJImNvbnNvbGU9dHR5UzAsMTE1MjAwICIgXAorCQkJCSJyb290PS9kZXYvbXRkYmxvY2s1ICIgXAorCQkJCSJtdGRwYXJ0cz1hdDkxX25hbmQ6MTI4ayhib290c3RyYXApcm8sIFwKKwkJCQkyNTZrKHVib290KXJvLDEyOGsoZW52MSlybywxMjhrKGVudjIpcm8sIFwKKwkJCQkyTShsaW51eCksLShyb290KSAiIFwKKwkJCQkicncgcm9vdGZzdHlwZT1qZmZzMiIKKworI2VuZGlmCisKKyNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQkxMTUyMDAKKyNkZWZpbmUgQ09ORklHX1NZU19CQVVEUkFURV9UQUJMRQl7MTE1MjAwICwgMTkyMDAsIDM4NDAwLCA1NzYwMCwgOTYwMCB9CisKKyNkZWZpbmUgQ09ORklHX1NZU19QUk9NUFQJCSJVLUJvb3Q+ICIKKyNkZWZpbmUgQ09ORklHX1NZU19DQlNJWkUJCTI1NgorI2RlZmluZSBDT05GSUdfU1lTX01BWEFSR1MJCTE2CisjZGVmaW5lIENPTkZJR19TWVNfUEJTSVpFCQkoQ09ORklHX1NZU19DQlNJWkUgKyBzaXplb2YoQ09ORklHX1NZU19QUk9NUFQpICsgMTYpCisjZGVmaW5lIENPTkZJR19TWVNfTE9OR0hFTFAJCTEKKyNkZWZpbmUgQ09ORklHX0NNRExJTkVfRURJVElORwkxCisjZGVmaW5lIENPTkZJR19BVVRPX0NPTVBMRVRFCisjZGVmaW5lIENPTkZJR19TWVNfSFVTSF9QQVJTRVIKKyNkZWZpbmUgQ09ORklHX1NZU19QUk9NUFRfSFVTSF9QUzIJIj4gIgorCisjZGVmaW5lIFJPVU5EKEEsIEIpCQkoKChBKSArIChCKSkgJiB+KChCKSAtIDEpKQorLyoKKyAqIFNpemUgb2YgbWFsbG9jKCkgcG9vbAorICovCisjZGVmaW5lIENPTkZJR19TWVNfTUFMTE9DX0xFTgkJUk9VTkQoMyAqIENPTkZJR19FTlZfU0laRSArIDEyOCoxMDI0LCAweDEwMDApCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogMTI4IGJ5dGVzIGZvciBpbml0aWFsIGRhdGEgKi8KKworI2RlZmluZSBDT05GSUdfU1RBQ0tTSVpFCSgzMioxMDI0KQkvKiByZWd1bGFyIHN0YWNrICovCisKKyNpZmRlZiBDT05GSUdfVVNFX0lSUQorI2Vycm9yIENPTkZJR19VU0VfSVJRIG5vdCBzdXBwb3J0ZWQKKyNlbmRpZgorCisjZW5kaWYK